Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 00:15   #1
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
Радость Подпрограммы/Паскаль

В общем условие задачи:
вывести те цифры которые не входят в десятичную запись числа.
Алгоритм моих действий:
в одномерный массив ввожу цифры и этим самым представляю его как бы числом. В подпрограмме нужно как-то проверить каких цифр не хватает в числе. ВОт думаю может нужно упорядочить массив по возрастанию, но вот не знаю как дальше проверить каких цифр нет в числе...
P.s. Хочется решить эту задачу с помощью массива, это вообще реально?

Последний раз редактировалось Базиля; 09.12.2009 в 00:17.
Базиля вне форума Ответить с цитированием
Старый 09.12.2009, 00:22   #2
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

а число в каком формате вводится? в таком 123.4567 ? и число какое? целое?
Alex_FF вне форума Ответить с цитированием
Старый 09.12.2009, 00:27   #3
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Да число целое, например:
123456
В этом числе на хватает чисел 78910
что-то типа того.
Объясни пожалуйста просто алгоритм действий)
вот не понимаю как это сделать если я введу
2562341
и он должен вывести
78910....
Базиля вне форума Ответить с цитированием
Старый 09.12.2009, 00:32   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

это для любых чисел:

Код:
var
  S: Set of Char;
  N: String;
  I: Integer;
  J: Char;

begin
  ReadLn(N); { считываешь число как строку }
  S := [];
  for I := 1 to Length(N) do
    Include(S, N[I]);
  WriteLn;
  WriteLn('Нет таких цифр:');
  for J := '0' to '9' do
    if not (J in S) then
      Write(J, ' ');
  ReadLn;
  ReadLn;
end.
это для целых:

Код:
var
  S: Set of Byte;
  N: Integer;
  I: Integer;

begin
  ReadLn(N);
  S := [];
  while N <> 0 do
  begin
    Include(S, N mod 10);
    N := N div 10;
  end;
  WriteLn;
  WriteLn('Нет таких цифр:');
  for I := 0 to 9 do
    if not (I in S) then
      Write(I, ' ');
  ReadLn;
  ReadLn;
end.

Последний раз редактировалось Alex_FF; 09.12.2009 в 00:36.
Alex_FF вне форума Ответить с цитированием
Старый 09.12.2009, 00:33   #5
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

А можешь пожалуйста без множеств?)
Просто препод докапается, мы их еще не прошли по программе)
Базиля вне форума Ответить с цитированием
Старый 09.12.2009, 00:37   #6
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Алгоритм такой: перебираешь число по цифрам и добавляешь его цифры в множество. Потом перебираешь числа от 0 до 9, и если это число есть в множестве, то ничего не делаешь, если нету - печатаешь его.
Alex_FF вне форума Ответить с цитированием
Старый 09.12.2009, 00:40   #7
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

А без множества не обойтись?
Базиля вне форума Ответить с цитированием
Старый 09.12.2009, 00:41   #8
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

заменил множество на массив...

Код:
var
  S: Array[0..9] of Byte;
  N: Integer;
  I: Integer;

begin
  for I := 0 to 9 do
    S[I] := 0;
  ReadLn(N);
  while N <> 0 do
  begin
    S[N mod 10] := 1;
    N := N div 10;
  end;
  WriteLn;
  WriteLn('Нет таких цифр:');
  for I := 0 to 9 do
    if S[I] = 0 then
      Write(I, ' ');
  ReadLn;
  ReadLn;
end.
Alex_FF вне форума Ответить с цитированием
Старый 09.12.2009, 00:44   #9
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
Вопрос

Цитата:
Сообщение от Базиля Посмотреть сообщение
Да число целое, например:
123456
В этом числе на хватает чисел 78910
что-то типа того.
Объясни пожалуйста просто алгоритм действий)
вот не понимаю как это сделать если я введу
2562341
и он должен вывести
78910....
это как так? в десятичной системе счисления нет цифры 10! Поэтому на 2562341 программа должна вывести 0 7 8 9
Alex_FF вне форума Ответить с цитированием
Старый 09.12.2009, 00:47   #10
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
это как так? в десятичной системе счисления нет цифры 10! Поэтому на 2562341 программа должна вывести 0 7 8 9
Ну я глуплю=) Уже ничего не соображаю) Спасибо тебе, помог. Щас будут с этим алгоритмом решать эту задачу с помощью подпрограммы.
Базиля вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подпрограммы Nightt Помощь студентам 0 18.06.2009 19:22
Паскаль, задачки - строки, подпрограммы Меф Помощь студентам 18 23.01.2009 15:39