Определить сумму элементов в тех столбцах, которые не содержат отрицательных элементов - Turbo Pascal
Формулировка задачи:
Дана целочисленная квадратная матрица. Определить:
1. Сумму элементов в тех столбцах, которые не содержат отрицательных эле¬ментов (оформить в виде функции).
2. Минимум среди сумм модулей элементов диагоналей, параллельных побоч¬ной диагонали матрицы (оформить в виде процедуры).
В паскаль
Помогите пожалуйста
Листинг программы
- Program z1;
- uses crt;
- const
- n=10;
- type
- matr = array[1..n,1..n] of integer;
- var
- i,j,ks1,ks2,min:integer;
- a:matr;
- summb:boolean;
- procedure summd(m1:matr; var m:integer);
- var i,j,k:integer;
- s:array[1..n*2] of integer;
- begin
- k:=0;
- for i:=1 to n do begin
- for j:=1 to n do begin
- s[j+k]:=s[j+k]+abs(a[i,j]);
- end;
- k:=k+1;
- end;
- m:=s[1];
- for i:=1 to n*2-1 do
- if sum;
- end;
- function sum(j:integer):integer;
- var i,s:integer;
- begin
- for i:=1 to n do s:=s+a[i,j];
- sum:=s;
- end;
- begin
- clrscr;
- randomize;
- for i:=1 to n do begin
- for j:=1 to n do begin
- a[i,j]:=random(50)-25;
- write(a[i,j]:3);
- end;
- writeln;
- end;
- writeln;
- for j:=1 to n do begin
- summb:=true;
- for i:=1 to n do begin
- if a[i,j]<0 then summb:=false;
- end;
- if summb then begin
- writeln('Summa ',j,' stolbca = ',sum(j));
- ks1:=ks1+1;
- end;
- end;
- if ks1=0 then writeln('Net stolbcov ne soderj otric el-v!');
- summd(a,min);
- writeln('Minimalnaya summa diagonalei paral gl diag: = ',min);
- readkey;
- end.
Решение задачи: «Определить сумму элементов в тех столбцах, которые не содержат отрицательных элементов»
textual
Листинг программы
- const n = 10;
- type int = 1..n;
- matrix = array[int, int] of integer;
- var i, j, k, sizemas : byte;
- mas : matrix;
- Function Sum(massiv:matrix; cl:byte) : integer;
- var s : integer;
- Begin
- s:= 0;
- for i:= 1 to sizemas do
- s:= s + mas[i, cl];
- sum:= s;
- End;
- BEGIN
- Randomize;
- WriteLn('Введите размер матрицы, меньше ', n, ': ');
- ReadLn(sizemas);
- for i:= 1 to sizemas do
- for j:= 1 to sizemas do
- mas[i, j]:= Random(20)-5;
- for i:= 1 to sizemas do
- begin
- for j:= 1 to sizemas do
- Write(mas[i, j]:4);
- WriteLn;
- end;
- for j:= 1 to sizemas do
- begin
- k:= 0;
- for i:= 1 to sizemas do
- if (mas[i, j] >= 0) then k:= k + 1
- else
- begin
- k:= 0;
- break;
- end;
- if k = sizemas then
- WriteLn('Сумма элементов ', j, ' столбца = ', Sum(mas, j));
- end;
- END.
Объяснение кода листинга программы
- В начале кода объявляются переменные n, тип int, переменная matrix и три переменные типа byte: i, j и k.
- Затем объявляется переменная sizemas, которая будет хранить размер матрицы.
- Запускается цикл Randomize, который инициализирует генератор случайных чисел.
- Пользователю предлагается ввести размер матрицы.
- В цикле for i:= 1 до sizemas происходит инициализация каждой ячейки матрицы mas[i, j] случайным числом от 0 до 19.
- После этого выводится содержимое каждой ячейки матрицы.
- Затем запускается цикл for j:= 1 до sizemas.
- Внутри этого цикла переменная k инициализируется значением 0.
- В цикле for i:= 1 до sizemas происходит проверка каждого элемента матрицы на положительность.
- Если элемент положительный, то к переменной k прибавляется единица.
- Если элемент отрицательный, то переменные i и j сбрасываются в начало цикла, и цикл прерывается командой break.
- После завершения внутреннего цикла проверяется значение переменной k.
- Если k равно размеру матрицы, то выводится сумма элементов текущего столбца.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д