Помогите пожалуйста Pascal Уровень C. Ввести натуральное число и определить, верно ли,...

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

Помогите пожалуйста
Pascal
Уровень C. Ввести натуральное число и определить, верно ли, что в его записи есть
две одинаковые цифры (не обязательно стоящие рядом).
Пример:
Введите натуральное число:
12342
Да.
Пример:
Введите натуральное число:
12345
Нет.
Проверьте программу,не работает почему-то
program nn;
var N,a,b,k,s:integer;
begin
writeln('Введите натуральное число');
readln(N);
k:=0;
N:=s;
while (N>0) do begin
a:=N mod 10;

while (N>0) do begin

b:=N mod 100 div 10;
if (a=b) then begin
k:=k+1;
end;
N:=N div 10;
end;
if (k>0) then
writeln('да')
else
N:=s;
N:=N-N mod 10;
end;
if (k>0) then writeln ('да') else
writeln('нет');
end.


Информатика (17 баллов) | 155 просмотров
0

Поиском воспользоваться не?

Дан 1 ответ
0 голосов
Правильный ответ

В программе алгоритм неверный, так дубликаты не найти.
Поэтому программа в основном переделана.

var
  n:integer;
  a:array[0..9] of boolean;
  d,i:byte;
  r:boolean;

begin
  Writeln('Введите натуральное число'); Readln(n);
  for i:=0 to 9 do a[i]:=False;
  r:=False;
  while n>0 do begin
    d:=n mod 10;
    if a[d] then begin
      r:=True;
      break
      end
    else a[d]:=True;
    n:=n div 10
    end;
  if r then Writeln('да')
  else Writeln('нет')
end.

(150k баллов)