download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Обяснение на задача в Паскал

Автор
Съобщение
nik2009
Съб, 09.03.13, 21:45
Здравейте, имам готова решена тази задача. Всичко разбирам, но не мога да обясня защо така трябва да се дели. Не съм математик и не ми е ясно, обяснете ако някой има поглед върху тези операции. Оцветил съм ги в червено, защо A се дели на 1000, В на 10 и т.н.

Програма, която въвежда цяло положително четирицифрено число N и определя дали се състои от различни цифри
var n : integer;
    a, b, c, d : byte;
begin
   write ('Enter n= ');
   readln (n);
   if (n<1000)or(N>9999) then write ('Error')
   else
      begin
        a := N div 1000;
         b := N mod 10;
         c := (N div 100) mod 10;
         d := (N div 10) mod 10;

         if (a<>b) and (a<>c) and (a<>d) and (b<>c) and (b<>d) and (c<>d) then write('Yes')
         else write('No')
      end
end.

phrozencrew
Съб, 09.03.13, 22:37
Div - прави целочислено делене, без да връща дробната част или остатъка
Mod - връща само остатъка от деленето.

Справка: математика от основния курс.

nik2009
Пон, 11.03.13, 11:23

RE: Обяснение на задача в Паскал

” Div - прави целочислено делене, без да връща дробната част или остатъка
Mod - връща само остатъка от деленето.

Справка: математика от основния курс. „

Не вдявам много от математиката, затова ми е интересно защо се дели точно на 1000 първо а после на 10 и защо един път се ползва целочислено делене, а след това с остатък. Това ме интересува да ми обясните, ако може, скаран съм с математиката. Не ми е ясна логиката на решаване.
редактиран от nik2009 на 11.03.13 11:24
insecteater
Пон, 11.03.13, 13:20

RE: Обяснение на задача в Паскал

Той phrozen ти написа кое какво прави. Просто извърши действията:
например числото 1234:

1234 div 1000 = 1
1234 mod 10 = 4
(1234 div 100) mod 10 = (12) mod 10 = 2
(1234 div 10) mod 100 = (123) mod 100 = 3

Целта на тези операции е да се получат в различните променливи различните цифри, от които е съставено първоначално въведеното число. В края на програмата с един if се проверяват дали променливите съдържащи цифрите са различни.

dreven
Пон, 11.03.13, 20:46
Объркването за този, които се опитва да разбере логиката се състои в разместване на последователността на цифрите. Това няма никакво значение за конкретната задача, но шашка учениците. Лично аз бих предпочел в този случай да използвам стрингова функция, която да ми върне цифрите една след друга. А ако се вложи в цикъл могат да се извлекат цифрите на произволно дълго число с една единствена логика.

Пример: сорс на VBS
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Въвеждаме произволно дълга цифра

cifra=InputBox("Въведи цифра")

'В този цикъл използвайки стринговата функция mid, я разлагаме последователно на цифри

do
j=j+1
if j > Len(cifra) or len(cifra)=0 then exit do
MsgBox Mid(cifra, j, 1)
Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cifri.vbs

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.