Заполнить комплекснозначную матрицу по правилу - PascalABC.NET
Формулировка задачи:
Помогите
Решение задачи: «Заполнить комплекснозначную матрицу по правилу»
textual
Листинг программы
const nmax=7; {чтобы матрица вошла на экран по ширине}
type complex=record
re,im:real;
end;
procedure Vyvod(var f:complex);{вывод комплексного числа}
begin
write(f.re:5:1);
if f.im<0 then write(f.im:0:1,'i ')
else write('+',f.im:0:1,'i ');
end;
procedure Summa(var f:complex;g:complex);{сложение двух комплексных чисел}
begin
f.re:=f.re+g.re;
f.im:=f.im+g.im;
end;
var a:array[1..nmax,1..nmax] of complex;
n,i,j,k,m:byte;
sr:complex;
begin
randomize;
repeat
write('Размер матрицы от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Матрица комплексных чисел:');
sr.re:=0;
sr.im:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j].re:=10*random-4;
a[i,j].im:=10*random-4;
Summa(sr,a[i,j]);
Vyvod(a[i,j]);
end;
writeln;
end;
writeln;
sr.re:=sr.re/n/n;
sr.im:=sr.im/n/n;
write('Среднее арифметическое=');
Vyvod(sr);
end.
Объяснение кода листинга программы
- В начале кода объявляются константы и типы данных, включая тип complex, который представляет комплексное число.
- Затем определены две процедуры: Vyvod для вывода комплексного числа и Summa для сложения двух комплексных чисел.
- Далее объявляется двумерный массив a, представляющий комплекснозначную матрицу размером n на n, и несколько переменных для управления циклами и временного хранения результата сложения.
- После этого происходит инициализация генератора случайных чисел и начинается цикл, который повторяется до тех пор, пока пользователь не введет допустимый размер матрицы.
- Внутри цикла выводится сообщение о размере матрицы и заполняется матрица a случайными комплексными числами.
- Затем происходит суммирование всех элементов матрицы в переменной sr и вычисляется среднее арифметическое путем деления суммы на n в квадрате.
- Наконец, выводится среднее арифметическое комплексное число.