Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Различие цифр в числе

Автор: vadim(b) 1.03.2007 22:55

30 минут искал поиском ниче не нашел. Прогу надо сделать любым способом(через строки или иным другим) мне мысли чето ни какой ни лезет, длина числа может быть различна. Кому не трудно накидайте хотябу саму основу кода :0

Автор: volvo 1.03.2007 23:07

var
digits: array[0 .. 9] of integer;
n, i: integer;

begin
readln(n);
while n > 0 do begin
inc(digits[n mod 10]);
n := n div 10;
end;
{ и проверяй, есть ли хотя бы в одном элементе digits значение > 1 }
end.


... если такое значение есть, то в числе присутствуют хотя бы 2 однаковые цифры...

Автор: T i m e 1.03.2007 23:13

Ну через строку к примеру можно так...

Код

var n,i,j:integer;
nst:string;
fl:boolean;
begin
clrscr;
write('Введите число: ');
readln(n);
str(n,nst);
fl := true;
for i := 1 to length(nst) do
for j := 1 to length(nst) do
  if (i <> j) and (nst[i] = nst[j]) then fl := false;
if fl then writeln('В числе не повторяются цифры') else
writeln('В числе повторяются цифры');
readln;
end.

Ну как volvo написал так конечно попроще будет...
Я просто через строки сделал...

Автор: мисс_граффити 1.03.2007 23:18

ну, если через строку, то можно и так:

var chislo,i: integer;
stroka: string;
povt: boolean;
begin
writeln('chislo');
readln(chislo);
str(chislo,stroka);
i:=1;
povt:=false;
while not(povt) and (i<length(stroka)) do
begin
povt:=boolean(pos(stroka[i],copy(stroka,i+1,length(stroka)-i)));
inc(i);
end;
writeln(povt);
readln;
end.

Автор: klem4 1.03.2007 23:50

Через строку можно в принципе чуть покороче, смысл конечно не изменится:

i := 1;
while (i <= Length(s)) and (Pos(s[i], Copy(s, i + 1, 255)) = 0) do inc(i);

writeln(i > Length(s));