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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 14:40   #1
spaincome
 
Регистрация: 20.02.2013
Сообщений: 4
По умолчанию Задача на Паскале №3

Текст задачи: Дано число А. Диапазон числа 0 < A < 20. Вывести все трехзначные целые числа, сумма цифр которых равна А.

Формат ответа: файл с исходным кодом решения задачи на одном из допустимых языков программирования.

ЯП: С, С++, Pascal

Входные данные (программа должна считать):

Целое число А

Выходные данные (программа должна вывести):

Трехзначные целые число удовлетворяющие условию задачи

Значения должны быть выведены каждый раз с новой строки и возрастающей последовательности (от наименьшего числа к наибольшему)
spaincome вне форума Ответить с цитированием
Старый 20.02.2013, 22:35   #2
PavelDD
Пользователь
 
Регистрация: 15.02.2013
Сообщений: 35
По умолчанию

Буду писать на Pascal.

Вот функция, возвращающая сумму цифр в числе.
Код:
Function SumD(n:LongInt):integer;
var Sum:integer;
 begin
  Sum:=0;
  while n>0 do begin
   Sum:=Sum + n mod 10;
   n:=n div 10;
  end;
  SumD:=Sum ;
 end;
Дальше читаем число A в диапазоне 0 < a < 20:

Код:
readln(a);
if a in [1..19] then continue
else write('Вы ввели неправильное число');
И сама программа:

Код:
for i:=100 to 999 do
if SumD(i)=a then writeln(i);
С возрастающей последовательностью подумаете сами. Я Вам предлагаю каждый раз i присваивать какому-то элементу из массива и дальше просто сортировать массив.
Попробуйте.Удачи.

Последний раз редактировалось PavelDD; 20.02.2013 в 22:40.
PavelDD вне форума Ответить с цитированием
Старый 21.02.2013, 09:42   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
возрастающей последовательностью подумаете сами.
не надо ничего придумывать!

дело в том, что цикл
for i:=100 to 999 do
будет гарантировано выдавать i в порядке возрастания.
Так что, это уже готовое решение!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача в паскале senora Помощь студентам 5 21.01.2011 17:19
Задача на Паскале Antoha79 Помощь студентам 1 23.05.2009 10:35
Задача на Паскале Witaliy Помощь студентам 2 09.02.2009 17:56
Задача в Паскале ! d00ker Помощь студентам 2 29.01.2009 21:52