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

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Mental
Сообщения: 5
Зарегистрирован: 01 янв 2008, 20:48

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

Есть: НЕ входящие в записи натурального числа
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.

Переделать не получилось, нужна помощь.
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

если себя не утруждать, то можно так

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

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.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Можно сделать так:
[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]
Ни что так не ограничивает фантазию программиста, как компилятор...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Простая задача, а как цепляет!

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

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)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить