Найти сумму всех положительных и произведение всех отрицательных элементов матрицы - PascalABC.NET
Формулировка задачи:
Задав матрицу А (REAL) размером N x N (N<=10), найти сумму всех ее положительных и произведение всех ее отрицательных элементов.
Пытался написать, но что-то не так. Не могу найти ошибку.
Листинг программы
- uses
- CRT;
- const
- n = 10;
- var
- mas: array[1..n, 1..n] of REAL;
- sum, p: REAL;
- x, y: BYTE;
- begin
- begin
- Writeln(' Исходная матрица:');
- for x := 1 To n Do
- begin
- for y := 1 To n Do
- begin
- mas[x, y] := random(301) - 150;
- write(mas[x, y]:3:0, ' ');
- end;Writeln;
- end;
- end;
- for x := 1 To n Do
- begin
- for y := 1 To n Do
- begin
- sum := 0;
- p := 1;
- if mas[x, y] < 0 then sum := sum + mas[x, y];
- if mas[x, y] > 0 then p := p * mas[x, y];
- end;
- end;
- Writeln('Произведение=', p:3:3);
- Writeln('Сумма=', sum:3:3);
- end.
Решение задачи: «Найти сумму всех положительных и произведение всех отрицательных элементов матрицы»
textual
Листинг программы
- const
- n = 10;
- var
- mas: array[1..n, 1..n] of REAL;
- sum, p: REAL;
- x, y: BYTE;
- begin
- begin
- Writeln(' Исходная матрица:');
- for x := 1 To n Do
- begin
- for y := 1 To n Do
- begin
- mas[x, y] := random(301) - 150;
- write(mas[x, y]:10:3);
- end;Writeln;
- end;
- end;
- sum := 0;
- p := 1;
- for x := 1 To n Do
- begin
- for y := 1 To n Do
- begin
- if mas[x, y] < 0 then sum := sum + mas[x, y];
- if mas[x, y] > 0 then p := p * mas[x, y];
- end;
- end;
- Writeln('Произведение=', p:0:3);
- Writeln('Сумма=', sum:0:3);
- end.
Объяснение кода листинга программы
- В начале кода объявляются переменные и матрица: — n = 10 - размерность матрицы — mas = array[1..n, 1..n] of REAL - матрица размером n на n, заполненная случайными числами от -150 до 150 — sum, p = REAL - переменные для хранения суммы и произведения отрицательных элементов матрицы — x, y = BYTE - переменные для хранения номеров строк и столбцов в матрице
- Выводится исходная матрица размером n на n: — for x := 1 To n Do - цикл по строкам — for y := 1 To n Do - цикл по столбцам — mas[x, y] := random(301) - 150; - присваивание элементам матрицы случайного числа от -150 до 150 — write(mas[x, y]:10:3); - вывод значения элемента с точностью до 3 знаков после запятой — Writeln; - переход на новую строку — Writeln; - переход на новую строку для вывода суммы и произведения
- Инициализируются переменные sum и p: — sum := 0; - сумма отрицательных элементов матрицы равна 0 — p := 1; - произведение положительных элементов матрицы равно 1
- Циклы по строкам и столбцам матрицы для вычисления суммы и произведения: — for x := 1 To n Do — for y := 1 To n Do — if mas[x, y] < 0 then sum := sum + mas[x, y]; - если элемент отрицательный, то добавляем его к сумме — if mas[x, y] > 0 then p := p * mas[x, y]; - если элемент положительный, то умножаем его на произведение
- Выводятся результаты вычислений: — Writeln('Произведение=', p:0:3); - вывод произведения с точностью до 3 знаков после запятой — Writeln('Сумма=', sum:0:3); - вывод суммы с точностью до 3 знаков после запятой
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д