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

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

Форум «Всё о Паскале» _ Задачи _ найти цифры,не входящие в десятичную запись числa n

Автор: brahma 8.12.2007 17:51

Доброго времени суток всем.
Перым своим сообщением на этом форуме прошу помочь решить следующую задачу :

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

Автор: Ozzя 8.12.2007 18:03

set1:=[];
readln(n);
while (n > 0) do
begin
digit := n mod 10;
include(set1,digit);
n := n div 10;
end;
for i:=0 to 9 do
if i not (in set1) then
write('Цифра', i , ' не входит')


Автор: klem4 8.12.2007 21:37

в программе есть недочет, если ввести n = 0, результат будет не верным.

+ компилятор это не пропустит:

  if i not (in set1) then

Автор: brahma 9.12.2007 17:57

Цитата(klem4 @ 8.12.2007 18:37) *

в программе есть недочет, если ввести n = 0, результат будет не верным.

+ компилятор это не пропустит:
  if i not (in set1) then


В любом случае говоря о натуральных числах нужно заранее оговаривать включен ли ноль в их состов или нет, о чем в условиях умалчивается.
Как изменить программу для n=0 ?
компилятор пропустит это :
 if not(i in set1) then

Автор: volvo 9.12.2007 18:10

Цитата
Как изменить программу для n=0 ?
Хотя бы вот так:
...
if n = 0 then set1 = [0]
else begin
set1 := [];
while (n > 0) do begin
digit := n mod 10;
include(set1, digit);
n := n div 10;
end;
end;
...

Автор: brahma 9.12.2007 18:21

Цитата
volvo

..Точно.спасибо.

Автор: Ozzя 10.12.2007 17:34

Цитата
в программе есть недочет, если ввести n = 0, результат будет не верным.

Здесь тормознул. Виноват.
Цитата
компилятор это не пропустит:
 if i not (in set1) then

Виноват дважды. Не проверял. Писал прямо тут.