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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2012, 22:34   #1
Whitecoat
 
Аватар для Whitecoat
 
Регистрация: 01.06.2012
Сообщений: 6
Вопрос Задача с использованием цикла for (Pascal)

"Вывести на экран все четырехзначные числа, сумма цифр которых равна 10, а также их количество и сумму"

Помогите найти ошибку в решении и исправить:
Код:
program cicldl912;

 
{$APPTYPE CONSOLE}

uses
  SysUtils;


var
      a,b,c,s,d,k,n:integer;
begin
       { TODO -oUser -cConsole Main : Insert code here }
  s:=0;
  n:=0;
  for k := 1000 to  9999 do
                        begin
                          a:=k div 1000;
                          b:=(k mod 1000)div 10;
                          c:=(k mod 100)div 100;     
                          d:=(k mod 10);
                          if a+b+c+d=10 then
                                      begin
                                        n:=n+1;
                                        s:=s+k      ;
                                        writeln(k);
                                      end;
                           end;
                        writeln('kolichestvo',k);
                        writeln('summa ravna',s);
                        readln;
end.

Последний раз редактировалось Whitecoat; 01.06.2012 в 22:54.
Whitecoat вне форума Ответить с цитированием
Старый 01.06.2012, 22:37   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
a:=k div 1000;
b:=(k mod 1000) div 100;
c:=(k mod 100) div 10; 
d:=k mod 10;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 01.06.2012, 22:48   #3
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Код:
i:=0;
s:=0;
for a:=1 to 9 do
  for b:=0 to 9 do
    for c:=0 to 9 do
      for d:=0 to 9 do
        if a+b+c+d = 10 then
        begin
          writeln(a*1000 + b*100 + c*10 + d);
          i:=i+1;
          s:=s+a*1000 + b*100 + c*10 + d;
        end;
writeln i;
writeln s;
Это классический вариант, который хотят увидеть многие преподаватели, особенно, если задача на вложенные циклы.
studen вне форума Ответить с цитированием
Старый 01.06.2012, 23:21   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

studen, тогда уже

Код:
for a:=1 to 9 do
  for b:=0 to 10 - a do
    for c:=0 to 10 - a - b do
      d:= 10 - a - b - c;
че зря перебирать заведомо неподходящее )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы цикла (Pascal) DenisMPT Помощь студентам 3 22.05.2012 21:38
Операторы цикла (Pascal) DenisMPT Помощь студентам 0 22.05.2012 20:49
Операторы цикла [PASCAL] Ximer Помощь студентам 3 08.04.2009 20:24
Операторы цикла (Pascal) Ximer Помощь студентам 4 19.03.2009 19:56