Помогите с программой на паскале

Дано натуральное число 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.  
→ Ссылка