Очень срочно. Вопрос по программированию по Паскалю. Задача: Даны 3 числа. Функцией...

0 голосов
50 просмотров

Очень срочно. Вопрос по программированию по Паскалю. Задача: Даны 3 числа. Функцией проверить, есть ли такое число в которой подряд идут 2 или больше одинаковых цифр. Почему данная программа выводит в любом случае, что нет такого числа. Program lul; Var a,b,c:Integer; Function qq (chislo:Integer):Integer; Var n,n1,k:Integer; Begin n:=0; n1:=0; k:=0; While (chislo*10 div 10 <> 0) do begin n:=chislo mod 10; chislo:=chislo div 10; n1:=chislo mod 10; If n=n1 then k:=1; break; end; qq:=k; end; begin ReadLn(a,b,c); If qq(a)=1 then WriteLN('Да, первое число походит'); If qq(b)=1 then WriteLn('Да, второе число подходит'); If qq(c)=1 then WriteLN('Да, третье число подходит') else WriteLn('Никакое число не подходит'); end.


Информатика (12 баллов) | 50 просмотров
Дан 1 ответ
0 голосов

Какая дикая дичь. Вот до чего доводит знакомство с Pascal неокрепших умов.

В принципе, ты бы увидел ошибку даже сам, если бы отступы расставлял. Дело в скобках begin-end - у тебя итерация цикла всегда завершается break, а не по условию n=n1.

P. S. *10 div 10 - эту замечательную операцию можешь ещё тысячу раз написать в проверке числа на ноль.

(654k баллов)
0

Ни в одном распространенном алгоритмическом языке не предполагается выполнение в условном операторе более одной инструкции языка, так что Паскаль тут не при чем, если нет ума указать, что выполнить нужно не одну инструкцию, а больше.