В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия

Даны два числа n и m. создайте двумерный массив a[n][m], заполните его таблицей умножения a[i][j]=i*j и выведите на экран. при этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом. входные данные программа получает на вход два числа n и m – количество строк и столбцов, соответственно. выходные данные программа должна вывести полученный массив. числа разделяйте одним пробелом. примеры входные данные 3 3 выходные данные 0 0 0 0 1 2 0 2 4

Показать ответ
Ответ:
DedikovVladisl
DedikovVladisl
05.10.2020 08:28
Вот с одиночным циклом (пока разберешься, можно лопнуть от натуги):

var
  i,j,k:byte;
  a:array[1..10,1..10] of byte;
begin
  for k:=1 to 100 do
  begin
    i:=(k-1)div10+1;
    j:=k mod 10;
    if j=0 then j:=10;
    a[i,j]:=i*j;
    Write(a[i,j],' ')
  end
end.

А вот современное решение, вообще без циклов:

// PascalABC.NET 3.2, сборка 1379 от 21.01.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=MatrGen(10,10,(i,j)->(i+1)*(j+1));
  a.Rows.SelectMany(x->x).Println
end.

В обоих случаях вывод выглядит так:
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота