Найти сумму каждого столбца матрицы - Turbo Pascal
Формулировка задачи:
Дана квадратная матрица:
1) Найти сумму каждого столбца матрицы и вывести сумму того столбца, у которого она является большей + нужно вывести номер столбца
2) Если в матрице отрицательных элементов больше чем положительных, то изменить все отрицательные элементы на цифру 0, а положительные элементы на цифру 1.
3) Вывести номер столбца, у которого все элементы равны 0, а если такого нету, вывести соответствующее сообщение
Решение задачи: «Найти сумму каждого столбца матрицы»
textual
Листинг программы
type arr=array[1..20]of integer;
var
i, j, n, max, ind,pn: integer;
b: arr;
a: array [1..20]of arr;
zer,nozer:boolean;
begin
writeln('Vvedite kolichestvo strok i stolbcov:');
readln(n);
writeln;
randomize;
writeln('1) Massiv:');
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] :=10-random(21);
write(a[i, j]:3);
end;
writeln;
end;
pn:=0;
for j := 1 to n do
begin
b[j] := 0;
for i := 1 to n do
begin
b[j] := b[j] + a[i, j];
pn:=pn+ord(a[i, j]>0)-ord(a[i, j]<0);
end;
end;
max := -(maxint+1);
for j := 1 to n do
begin
writeln('Summa elementov ', j, ' stolbca: ', b[j]:4);
if b[j] > max then
begin
max := b[j];
ind := j;
end;
end;
writeln('Maksimal"naya summa u stolbca ', ind);writeln;
if pn<0 then//задание 2
begin
writeln('2) Massiv:');
for i := 1 to n do
begin
for j := 1 to n do
begin
if a[i, j]<>0 then a[i, j]:=ord(a[i, j]>0);
write(a[i, j]:3);
end;
writeln;
end;
end
else writeln('2) otricatelnyh ne bol"she, chem polozhitel"nyh');
nozer:=true;
for j := 1 to n do //задание 3
begin
zer:=a[1, j]=0;
for i := 2 to n do
zer:=zer and (a[i, j]=0);
if zer then
begin
writeln('3) Vse nuli v stolbce ',j);
nozer:=not zer;
end;
end;
if nozer then writeln('3) Net nulevyh stolbcov');
readln;
end.
Объяснение кода листинга программы
- Создаётся тип данных arr, который представляет собой массив целых чисел размером от 1 до 20.
- Создаются переменные i, j, n, max, ind и pn, которые будут использоваться для работы с матрицей.
- Создается переменная b, которая будет представлять собой массив, в котором будут храниться суммы элементов каждого столбца.
- Создается массив a, который будет представлять собой исходную матрицу.
- Вводится количество строк и столбцов матрицы с помощью функции readln().
- Используется функция randomize() для генерации случайных чисел.
- Заполняется матрица a с помощью цикла for.
- Вычисляется максимальная сумма элемента матрицы с помощью цикла for.
- Выводится максимальная сумма элемента.
- Проверяется условие pn<0, которое означает, что в матрице есть отрицательные числа.
- Если условие выполняется, то выводится вторая часть программы, которая также использует цикл for.
- Если условие не выполняется, то выводится сообщение
2) otricatelnyh ne bolshe, chem polozhitelnyh. - В задаче 3 используется цикл for для проверки каждого столбца матрицы на наличие нулей.
- Если хотя бы в одном столбце есть ноль, то выводится сообщение
3) Vse nuli v stolbce. - Если все столбцы матрицы не содержат нулей, то выводится сообщение
3) Net nulevyh stolbcov. - Программа завершается с помощью функции readln().