Вывести таблицу умножения | Язык Паскаль
Pascal. Основы программирования Сложные Средние Простые задачи

Вывести таблицу умножения

Требуется вывести на экран двумерную таблицу умножения.

Нередко ставится задача построить на экране какую-нибудь двумерную таблицу. Подобное реализуется с помощью двух циклов. При этом один цикл должен быть вложен в другой.

Например, в коде ниже внешний цикл for отвечает за формирование строк. Всего их будет 9, значит количество повторений цикла должно быть равно 9.

Внутренний цикл for формирует каждое значение в строке. Всего значений в строке 9. Значит и число его повторений должно быть 9.

В теле вложенного цикла for происходит формирование значения очередного элемента таблицы путем умножения текущего значения счетчика внешнего цикла на текущее значение счетчика внутреннего цикла. Поскольку на протяжении десяти повторений внутреннего цикла, значение счетчика внешнего цикла не меняется, то получается строка, где числа от 1 до 9 умножаются на одно и то же число.

После выхода из внутреннего цикла, перед следующей итерацией внешнего цикла требуется осуществить переход на новую строку. Иначе все значения будут записаны не в виде таблицы, а в виде одной строки.

var
  i, j: integer;

begin

  for i := 1 to 9 do begin

    for j := 1 to 9 do
      write((i * j):3);
      
    writeln;

  end;

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

Вариант программы построения таблицы с подсветкой заголовков строк и столбцов. Размерность таблицы задается с клавиатуры:

uses crt;

var
    i, j, n: integer;

begin
    readln(n);

    for i := 1 to n do begin

        for j := 1 to n do begin

            if (i = 1) or (j = 1) then
                textcolor(lightgreen)
            else
                textcolor(white);

            write((i * j):4);
        end;

        writeln;

    end;
end.