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

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

Форум «Всё о Паскале» _ Задачи _ Задача( сделать множеством)

Автор: CormiX 9.03.2010 19:42

Здравствуйте! Необходима помощь в решении задачки:
Дано некоторое число N, вывести на экран числа из которих оно состоит.

Думаю нужно задать множество чисел от 0 до 9, и както проверять числа из которых состоит N, проверив принадлежность числа к N копировать его и вывести на экран и так с каждым пока не дойдеш до конца...Но легче сказать чем сделать. Помогите пожалуйста.

Автор: Client 9.03.2010 21:06

Цитата
числа из которих оно состоит
Или все-таки цифры?
Цитата
Но легче сказать чем сделать
Свои наработки?

Автор: CormiX 9.03.2010 21:33

Ой да простите цифры.

program laboratornaja2;
uses crt;
var mnogestvo: set of 0..9; a,b,c:integer;
begin
clrscr;
writeln('Vvedite 4yslo');
readln(a);
for a:=0 to b do
begin
copy('a',1) if b in mnogestvo then
readln;
else writeln('4yslo ne podxodit);


ну это не очень...синтаксис языка не знаю нормально. Не знаю как задать чтоб копировало пока не достигнет конца цифр в числе N. Там чтото вроде repeat until ... а вот дальше не понимаю.

Автор: Client 9.03.2010 21:48

uses crt;
var
a:set of 0..9;
b,c:longint;
i:byte;
begin
clrscr;
a:=[0..9];
readln(b);
c:=abs(b);
while c>0 do begin
i:=c mod 10;
a:=a-[i];
c:=c div 10;
end;
for i:=0 to 9 do if not (i in a) then writeln(i);
readkey;
end.
Тут я удаляю из множества, хотя можно сделать добавлением в множество

Автор: CormiX 9.03.2010 22:27

Спасибо большое очень помогли!

Автор: volvo 10.03.2010 5:33

Цитата
Тут я удаляю из множества, хотя можно сделать добавлением в множество
А, простите, что оно мне ничего при введении 0 не показывает? Или 0 - это не число? smile.gif

Client, понимаешь в чем дело... Программа чаще всего валится на граничных значениях. Их надо тестировать в первую очередь.

Автор: Client 10.03.2010 17:50

косячок smile.gif (на самом деле было так задумано lol.gif )
От volvo ничего не скроешь smile.gif +1

Автор: volvo 10.03.2010 17:57

Мне вот больше интересно, как ты этот косячок исправлять будешь smile.gif Есть варианты, хочется посмотреть, какой из них ты выберешь...

Автор: Client 10.03.2010 18:15

Само просто сделать проверку на 0, но... что-то смайлик заствил засомневаться smile.gif

repeat
i:=c mod 10;
a:=a-[i];
c:=c div 10;
until c=0;
Исправил так smile.gif

Автор: volvo 10.03.2010 18:19

     a := [0 .. 9] - [c mod 10];
сделать не догадался? smile.gif

Автор: Client 10.03.2010 18:30

no1.gif
4.gif