Помогите с программой на паскале
Дано натуральное число n. Проверить, все ли цифры в этом числе различные.
Программу написал так:
var c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c,n:integer;
begin
readln(n);
c0:=0;c1:=0;c2:=0;c3:=0;c4:=0;c5:=0;c6:=0;c7:=0;c8:=0;c9:=0;
while n<>0 do
begin
c:=n mod 10;
if c=0 then c0:=c0+1;
if c=1 then c1:=c1+1;
if c=2 then c2:=c2+1;
if c=3 then c3:=c3+1;
if c=4 then c4:=c4+1;
if c=5 then c5:=c5+1;
if c=6 then c6:=c6+1;
if c=7 then c7:=c7+1;
if c=8 then c8:=c8+1;
if c=9 then c9:=c9+1;
n:=n div 10;
end;
if (c0>1) or (c1>1) or (c2>1) or (c3>1) or (c4>1) or (c5>1) or (c6>1) or (c7>1) or (c8>1) or (c9>1) then write('В числе не все цифры разные')
else write('В числе все цифры разные');
end.
Не уверен, что она удовлетврит преподавателя. Подскажите все ли я правильно сделал.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Более разумно использовать массив со счётчиками цифр. Можете проверить этот код на ideone.
program ideone;
var
n, d:integer;
a: array[0..9] of integer;
distinct: boolean;
begin
readln(n);
distinct := true;
while n>0 do
begin
d := n mod 10;
inc(a[d]);
if a[d] > 1 then begin
distinct := false;
break;
end;
n:=n div 10;
end;
if distinct then write('В числе все цифры разные')
else write('В числе есть одинаковые цифры');
end.