Очень срочно. Вопрос по программированию по Паскалю. Задача: Даны 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.

Ответы

Ответ дал: Аноним
0

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

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

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

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