Напишите программу, которая заполняет матрицу случайными числами, а затем записывает нули во все элементы выше главной диагонали. На языке Паскаль. Даю 20 баллов
2. const n=5; var a:array[1..n,1..n] of integer; i,j:integer; begin Randomize; writeln('Исходный массив:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(100); write(a[i,j]:4); end; writeln; end; for i:=1 to n do for j:=i+1 to n do a[i,j]:=0; writeln('Полученный массив:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; end.
Answers & Comments
Verified answer
1. PascalABC.NET 3.3const n=5;
begin
writeln('До:');
var a:=MatrRandom(n,n,-10,10); a.Println(5);
var b:=a.ElementsWithIndexes.Select(k->k[2]>k[1]?0:k[0]).ToArray;
writeln('После:');
a:=MatrGen(n,n,(i,j)->b[i*n+j]); a.Println(5);
end.
Пример:
До:
-7 3 8 -6 -5
-2 6 -1 -6 -8
5 7 2 -10 0
9 3 -8 5 -6
-4 1 1 0 -10
После:
-7 0 0 0 0
-2 6 0 0 0
5 7 2 0 0
9 3 -8 5 0
-4 1 1 0 -10
2.
const n=5;
var
a:array[1..n,1..n] of integer;
i,j:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
for i:=1 to n do
for j:=i+1 to n do a[i,j]:=0;
writeln('Полученный массив:');
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
end.
Пример:
Исходный массив:
62 25 21 54 22
71 39 41 49 63
26 93 50 79 35
81 45 40 99 45
46 87 63 36 15
Полученный массив:
62 0 0 0 0
71 39 0 0 0
26 93 50 0 0
81 45 40 99 0
46 87 63 36 15