Свой тип данных: матрица - Pascal ABC
Формулировка задачи:
Нужно реализовать свой тип данных на языке паскль,в моём случае это матрица,должны быть предусмотрены операции ввода/вывода,сложения/вычитания и хотя бы одна спецефическая для данного типа данных операция.Я вообще не представляю как это можно сделать,и вообще реально ли это написать?бился 5 дней получал в итоге ересь,которую не засчитали((оч нужна ваша помощь,может быть есть у кого то наработки или клеше.
Решение задачи: «Свой тип данных: матрица»
textual
Листинг программы
const n = 4; m = 3; type TMatrix = array[1..n, 1..m] of integer; {свой тип} var a, b, c : TMatrix; {ввод} procedure input(var z : TMatrix); var i, j : integer; begin for i := 1 to n do for j := 1 to m do z[i,j] := random(100) end; {вывод} procedure output(z : TMatrix); var i, j : integer; begin for i := 1 to n do begin for j := 1 to m do write(z[i,j]:4); writeln end end; {сложение} function add(z, x : TMatrix) : TMatrix; var i, j : integer; temp : TMatrix; begin for i := 1 to n do for j := 1 to m do temp[i,j] := z[i,j] + x[i,j]; add := temp end; {вычитание} function sub(z, x : TMatrix) : TMatrix; var i, j : integer; temp : TMatrix; begin for i := 1 to n do for j := 1 to m do temp[i,j] := z[i,j] - x[i,j]; sub := temp end; {специфич. операция поиск максимума в матрице} function max(z : TMatrix) : integer; var i, j, temp : integer; begin temp := -1000; for i := 1 to n do for j := 1 to m do if z[i,j] >= temp then temp := z[i,j]; max := temp end; {ОСНОВНАЯ ПРОГРАММА} BEGIN randomize; writeln('первая матрица:'); input(a); output(a); writeln('вторая матрица:'); input(b); output(b); writeln('сумма матриц:'); c := add(a, b); output(c); writeln('разность матриц:'); c := sub(a, b); output(c); writeln('максимальный элемент первой матрицы: ', max(a)); writeln('максимальный элемент второй матрицы: ', max(b)) END.
Объяснение кода листинга программы
- Константы: n = 4; m = 3;
- Тип данных: TMatrix = array[1..n, 1..m] of integer;
- Переменные: a, b, c : TMatrix;
- Ввод: procedure input(var z : TMatrix); var i, j : integer; begin for i := 1 to n do for j := 1 to m do z[i,j] := random(100); end;
- Вывод: procedure output(z : TMatrix); var i, j : integer; begin for i := 1 to n do begin for j := 1 to m do write(z[i,j]:4); writeln end end;
- Сложение: function add(z, x : TMatrix) : TMatrix; var i, j : integer; temp : TMatrix; begin for i := 1 to n do for j := 1 to m do temp[i,j] := z[i,j] + x[i,j]; add := temp end;
- Вычитание: function sub(z, x : TMatrix) : TMatrix; var i, j : integer; temp : TMatrix; begin for i := 1 to n do for j := 1 to m do temp[i,j] := z[i,j] — x[i,j]; sub := temp end;
- Максимальные элементы: function max(z : TMatrix) : integer; var i, j, temp : integer; begin temp := -1000; for i := 1 to n do for j := 1 to m do if z[i,j] >= temp then temp := z[i,j]; max := temp end;
- Основная программа: BEGIN randomize; writeln('первая матрица:'); input(a); output(a); writeln('вторая матрица:'); input(b); output(b); writeln('сумма матриц:'); c := add(a, b); output(c); writeln('разность матриц:'); c := sub(a, b); output(c); writeln('максимальный элемент первой матрицы: ', max(a)); writeln('максимальный элемент второй матрицы: ', max(b)); END.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д