Помощь - Поиск - Пользователи - Календарь
Полная версия: Различие цифр в числе
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vadim(b)
30 минут искал поиском ниче не нашел. Прогу надо сделать любым способом(через строки или иным другим) мне мысли чето ни какой ни лезет, длина числа может быть различна. Кому не трудно накидайте хотябу саму основу кода :0
volvo
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
Ну через строку к примеру можно так...
Код

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 написал так конечно попроще будет...
Я просто через строки сделал...
мисс_граффити
ну, если через строку, то можно и так:
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
Через строку можно в принципе чуть покороче, смысл конечно не изменится:
i := 1;
while (i <= Length(s)) and (Pos(s[i], Copy(s, i + 1, 255)) = 0) do inc(i);

writeln(i > Length(s));
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.