Страница 1 из 1

Подкорректируйте

Добавлено: 16 мар 2008, 00:00
Mental
Нужно: Напечатать в возрастающем порядке все цифры, входящие в записи данного числа.

Есть: НЕ входящие в записи натурального числа
program j4;
var
m:set of 0..9;
n,o,i:integer;
begin
write('Введите число:');
readln(n);
m:=[0,1,2,3,4,5,6,7,8,9];
while n>0 do
begin o:=n mod 10;
n:=n div 10;
if (o in m) then m:=m-[o]
end;
writeln('Цифры которых нет в числе:');
for i:=0 to 9 do
if i in m then
write(i,',');
readln;
end.

Переделать не получилось, нужна помощь.

Re: Подкорректируйте

Добавлено: 16 мар 2008, 00:37
airyashov
если себя не утруждать, то можно так

Код: Выделить всё

program j4;
var
m,m1:set of 0..9;
n,o,i:integer;
begin
write('‚ўҐ¤ЁвҐ зЁб«®:');
readln(n);
m:=[0,1,2,3,4,5,6,7,8,9];
m1:=[0,1,2,3,4,5,6,7,8,9];

while n>0 do
begin o:=n mod 10;
      n:=n div 10;
      if (o in m) then m:=m-[o]
end;

for i:=0 to 9 do
if i in m then m1:=m1-[i];

for i:=0 to 9 do
if i in m1 then write(i,',');
readln;
end.

Re: Подкорректируйте

Добавлено: 16 мар 2008, 11:03
MOTOCoder
Можно сделать так:
[syntax='Delphi']
var
iNum:LongInt;
sNum:string;
n:LongInt;
i,c:integer;
Digits:array[0..9]of boolean;

begin
for i:=0 to 9 do
Digits:=False;

writeln('Введите число');
readln(iNum);
str(iNum,sNum);
for i:=1 to Length(sNum) do
begin
Val(sNum,n,c);
Digits[n]:=True;
end;

for i:=0 to 9 do
if Digits then
write(i,' ');
readln;

end.

[/syntax]

Re: Подкорректируйте

Добавлено: 17 мар 2008, 11:54
Хыиуду
Простая задача, а как цепляет!

Код: Выделить всё

var a: set of byte;
x,i:integer;
begin
  readln(x);
  while x>0 do
  begin
      include(x mod 10, a);
      x:=x div 10;
  end;
  for i:=0 to 9 do
  if i in a then writeln(i);
end.
Соответственно, если нужны цифры, которые не входят в число, то в предпоследней строке if not (i in a) then writeln(i)