Что будет напечатано по выполнении следующего фрагмента программы на языке Pascal: s1 := 'программирование'; Str (5, s2); Writeln (s2 + " "+ Copy (s1, 4, 5)); ответ привести без кавычек!
// PascalABC.NET 3.2, сборка 1379 от 21.01.2017 // Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк в массиве:'); var n:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',m,',',n,'] ***'); var a:=MatrRandom(m,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var k:=ReadInteger('Номер столбца для подсчета суммы:'); Writeln('S=',a.Col(k-1).Sum) end.
На случай, если я неверно понял задание и нужна сумма по КАЖДОЙ колонке:
begin var m:=ReadInteger('Количество строк в массиве:'); var n:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',m,',',n,'] ***'); var a:=MatrRandom(m,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); a.Cols.Select(s->s.Sum).Println end.
Пример Количество строк в массиве: 4 Количество столбцов в массиве: 7 *** Исходный массив [4,7] *** 13 -14 82 88 -38 55 89 11 74 -35 85 13 27 -80 -88 76 -64 -88 -50 28 -13 90 87 -71 -94 -59 95 -83
Вот с одиночным циклом (пока разберешься, можно лопнуть от натуги):
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.
// Внимание! Если программа не работает, обновите версию!
begin
var m:=ReadInteger('Количество строк в массиве:');
var n:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** Исходный массив [',m,',',n,'] ***');
var a:=MatrRandom(m,n,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var k:=ReadInteger('Номер столбца для подсчета суммы:');
Writeln('S=',a.Col(k-1).Sum)
end.
Пример
Количество строк в массиве: 5
Количество столбцов в массиве: 8
*** Исходный массив [5,8] ***
91 -39 49 29 -60 -58 -88 -5
-80 -5 58 38 -75 -76 -54 -33
-60 -66 98 -88 96 -48 94 2
-4 81 -38 -91 26 -91 32 7
30 83 30 3 22 93 31 0
Номер столбца для подсчета суммы: 4
S=-109
На случай, если я неверно понял задание и нужна сумма по КАЖДОЙ колонке:
begin
var m:=ReadInteger('Количество строк в массиве:');
var n:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** Исходный массив [',m,',',n,'] ***');
var a:=MatrRandom(m,n,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
a.Cols.Select(s->s.Sum).Println
end.
Пример
Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив [4,7] ***
13 -14 82 88 -38 55 89
11 74 -35 85 13 27 -80
-88 76 -64 -88 -50 28 -13
90 87 -71 -94 -59 95 -83
26 223 -88 -9 -134 205 -87
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