Ввести натуральное число и определить, какие цифры встречаются несколько раз.
Пример: Введите число >= 0: 2323 Повторяются: 2, 3
Answers & Comments
emblerik
Var a, c : integer; con, rep : array [0..9] of boolean; begin read (a); while a > 0 do begin c := a mod 10; a := a div 10; if not con[c] then con[c] := true else rep[c] := true; end; for c := 0 to 9 do if rep[c] then write (c, ' '); end.
2 votes Thanks 1
vhhhh
программа не выполняется...решение должно быть проще+важно наличие защиты от неправильного ввода
vhhhh
прошу прощения, выполняется, но это немного не то
emblerik
да, что значит защиты от неправильного ввода?
vhhhh
при вводе отрицательного числа программа должна повторять ввод
emblerik
var a, c : integer; b : array [0..9] of integer; begin read (a); while a < 0 do begin writeln ('Введите a >= 0!'); read (a); end; while a > 0 do begin c := a mod 10; a := a div 10; b[c] := b[c] + 1; end; for c := 0 to 9 do if b[c] > 1 then write (c, ' '); end.
Answers & Comments
a, c : integer;
con, rep : array [0..9] of boolean;
begin
read (a);
while a > 0 do
begin
c := a mod 10;
a := a div 10;
if not con[c] then con[c] := true
else rep[c] := true;
end;
for c := 0 to 9 do
if rep[c] then write (c, ' ');
end.
хорошо, сейчас переделаю на Integer
a, c : integer;
b : array [0..9] of integer;
begin
read (a);
while a < 0 do
begin
writeln ('Введите a >= 0!');
read (a);
end;
while a > 0 do
begin
c := a mod 10;
a := a div 10;
b[c] := b[c] + 1;
end;
for c := 0 to 9 do
if b[c] > 1 then write (c, ' ');
end.