Напечатать номера строк матрицы, произведение элементов которых совпадает с суммой элементов последней строки - Pascal
Формулировка задачи:
Дана целочисленная матрица размером MxN. Найти и напечатать номера тех строк матрицы, произведение элементов которых , совпадает с суммой элементов последней строки
Решение задачи: «Напечатать номера строк матрицы, произведение элементов которых совпадает с суммой элементов последней строки»
textual
Листинг программы
const N = 5;
const M = 10;
type item_t = integer;
type line_t = array[1..M] of item_t;
type tabl_t = array[1..N] of line_t;
procedure printLine( const l: line_t );
var
i: integer;
begin
for i:= 1 to M do
write(l[i] :5);
writeln;
end;
procedure printTabl( const t: tabl_t );
var
i: integer;
begin
for i:= 1 to N do
printLine(t[i]);
end;
procedure init_2d( var a: tabl_t );
var
x,y: integer;
begin
for y:=1 to N do
for x:=1 to M do
a[y][x] := random(-100 , 100);
end;
function getMulP( const a: line_t ):integer;
var
r,x: integer;
begin
r := 1;
for x:=1 to M do
r := r *a[x];
getMulP := r;
end;
var
a: tabl_t;
x,y,sumEndLine: integer;
fBreak: boolean;
const DEV_MODE = false;
begin
repeat
fBreak := false;
init_2d(a);
sumEndLine := 0;
for x:=1 to M do
sumEndLine := sumEndLine + a[N][x];
for y:=1 to N do
if getMulP(a[y]) = sumEndLine then begin
writeln( 'Sum == Mul; line: ',y );
fBreak := true;
end;
until (not DEV_MODE) OR fBreak;
printTabl(a);
Writeln('-------------------------------');
end.
Объяснение кода листинга программы
Этот код написан на языке Pascal и выполняет следующие действия:
- Объявляются необходимые переменные и структуры данных: N, M, item_t, line_t, tabl_t, i, x, y, a, sumEndLine, fBreak.
- Определяются процедуры и функции: printLine, printTabl, init_2d, getMulP.
- В функции init_2d инициализируются случайным образом все элементы двумерного массива a.
- В функции getMulP вычисляется произведение элементов строки, сумма элементов которой совпадает с суммой элементов последней строки.
- В основной части кода:
- Создается экземпляр двумерного массива a.
- Инициализируется переменная sumEndLine суммой элементов последней строки.
- Циклом перебираются строки матрицы.
- Для каждой строки проверяется условие: если произведение элементов этой строки совпадает со значением sumEndLine, то выводится сообщение и переменная fBreak устанавливается в истинное значение, чтобы прервать цикл.
- После проверки всех строк выводится итоговая таблица матрицы.
- Выводится символ
-для разделения строк результатов. - Конец программы. Обратите внимание, что в этом коде нет вложенных списков.