Решение задачи №8 из главы 13.1: Несколько строк вложенными циклами - Обсуждение решения

Решение задачи №8 из главы 13.1

Выведете на экран числа от 1 до 5 два раза с помощью вложенных циклов. Так чтобы в консоли было:
1 2 3 4 5
1 2 3 4 5

var a, b: integer;
begin
  for a := 1 to 5 do // цикл по строкам
   write(a,' ');
   begin
     writeln(); // переносим строку
     for b := 1 to 5 do // цикл по строкам
       write(b,' ');
   end;
   readln();
end.     
vedro-compota's picture

вы запускали этот код? он решает задачу??

_____________
матфак вгу и остальная классика =)

gani84's picture

Да. Все работает!!!

vedro-compota's picture

и что будет на экране?

_____________
матфак вгу и остальная классика =)

gani84's picture

Результат будет
1 2 3 4 5
1 2 3 4 5
Вы код запускали. Уже можно засчитать эту задачу!!!

vedro-compota's picture

согласен, но у вас абсолютно неправильное форматирование и структура кода, есть подозрение, что вы не понимаете что происходит.

  • Ответьте на вопрос: это вложенные циклы или нет?
  • Приведите правильное решение через вложенные циклы

_____________
матфак вгу и остальная классика =)

gani84's picture

var   a,i:integer;
begin
   a:=4;
   repeat   // внешний цикл
      for i:=1 to 5 do // (вложенный цикл) выводим все числа до a
          write(i, ' ');
      writeln(); // перенос строки
      for i:=1 to 5 do // (вложенный цикл) выводим все числа до a
          write(i, ' ');
   until (a < 5);  // конец тела внешнего цикла
readln();
end.
vedro-compota's picture

что у вас вообще делает внешний цикл? Вообще внешний цикл по-идее должен дважды запустить внутренний, а у вас написано так, что внешний цикл работает один раз -- т.е. он вообще не нужен.

_____________
матфак вгу и остальная классика =)

gani84's picture

var i, j: integer;
begin
  i := 1; // начальное значение для счетчика внешнего цикла

  repeat // начало тела внешнего цикла

    j := 1; //  сбрасываем значение счетчика внутреннего цикла в единицу (чтобы он повторился как и предыдущий раз), или если речь идёт о первом витке, то это действие можно назвать заданием начального значения счетчика
    while (j<=5) do // выводим равенства очередной строки, счётчик как правый множитель
      begin
        write(j, ' ');
        j:=j+1; // увеличиваем значение счетчика внутреннего цикла
      end;

    writeln(); // переносим строку
    i:=i+1; // увеличиваем значение счетчика внешнего цикла

  until (i > 2);  // проверка условия выхода из внешнего цикла и конец его тела

  readln();
end.
vedro-compota's picture

решение засчитано.

_____________
матфак вгу и остальная классика =)

Из этого кода можно сделать вывод таблицы Пифагора.

var a, b: integer;
begin
  for a := 1 to 9 do // цикл по строкам
   begin
     for b := 1 to 9 do // цикл по строкам
       write(a*b:2,' ');
     writeln(); // переносим строку
   end;
   readln();
end.
 1  2  3  4  5  6  7  8  9 
 2  4  6  8 10 12 14 16 18 
 3  6  9 12 15 18 21 24 27 
 4  8 12 16 20 24 28 32 36 
 5 10 15 20 25 30 35 40 45 
 6 12 18 24 30 36 42 48 54 
 7 14 21 28 35 42 49 56 63 
 8 16 24 32 40 48 56 64 72 
 9 18 27 36 45 54 63 72 81