Очень срочно. Вопрос по программированию по Паскалю. Задача: Даны 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
Ни в одном распространенном алгоритмическом языке не предполагается выполнение в условном операторе более одной инструкции языка, так что Паскаль тут не при чем, если нет ума указать, что выполнить нужно не одну инструкцию, а больше.
Вас заинтересует
1 год назад
1 год назад
2 года назад
7 лет назад
7 лет назад
8 лет назад