Напечатать номера строк матрицы, произведение элементов которых совпадает с суммой элементов последней строки - Pascal

Узнай цену своей работы

Формулировка задачи:

Дана целочисленная матрица размером MxN. Найти и напечатать номера тех строк матрицы, произведение элементов которых , совпадает с суммой элементов последней строки

Решение задачи: «Напечатать номера строк матрицы, произведение элементов которых совпадает с суммой элементов последней строки»

textual
Листинг программы
  1. const N = 5;
  2. const M = 10;
  3.  
  4. type item_t = integer;
  5. type line_t = array[1..M] of item_t;
  6. type tabl_t = array[1..N] of line_t;
  7.  
  8. procedure printLine( const l: line_t );
  9. var
  10.   i: integer;
  11. begin
  12.   for i:= 1 to M do
  13.     write(l[i] :5);
  14.   writeln;  
  15. end;
  16. procedure printTabl( const t: tabl_t );
  17. var
  18.   i: integer;
  19. begin
  20.   for i:= 1 to N do
  21.     printLine(t[i]);
  22. end;
  23.  
  24. procedure init_2d( var a: tabl_t );
  25. var
  26.   x,y: integer;
  27. begin
  28.     for y:=1 to N do
  29.       for x:=1 to M do
  30.         a[y][x] := random(-100 , 100);
  31. end;
  32.  
  33. function getMulP( const a: line_t ):integer;
  34. var  
  35.   r,x: integer;
  36. begin
  37.     r := 1;
  38.     for x:=1 to M do
  39.       r := r *a[x];
  40.    getMulP := r;      
  41. end;      
  42.  
  43.  
  44.  
  45. var
  46.   a: tabl_t;
  47.   x,y,sumEndLine: integer;
  48.   fBreak: boolean;
  49.  
  50. const DEV_MODE = false;
  51.  
  52. begin
  53.   repeat
  54.     fBreak := false;
  55.    
  56.     init_2d(a);
  57.  
  58.     sumEndLine := 0;
  59.     for x:=1 to M do
  60.       sumEndLine := sumEndLine + a[N][x];
  61.          
  62.     for y:=1 to N do
  63.       if getMulP(a[y]) = sumEndLine then begin
  64.         writeln( 'Sum == Mul; line: ',y );
  65.         fBreak := true;
  66.       end;
  67.  
  68.   until (not DEV_MODE) OR fBreak;
  69.  
  70.   printTabl(a);
  71.  
  72.   Writeln('-------------------------------');
  73. end.

Объяснение кода листинга программы

Этот код написан на языке Pascal и выполняет следующие действия:

  1. Объявляются необходимые переменные и структуры данных: N, M, item_t, line_t, tabl_t, i, x, y, a, sumEndLine, fBreak.
  2. Определяются процедуры и функции: printLine, printTabl, init_2d, getMulP.
  3. В функции init_2d инициализируются случайным образом все элементы двумерного массива a.
  4. В функции getMulP вычисляется произведение элементов строки, сумма элементов которой совпадает с суммой элементов последней строки.
  5. В основной части кода:
    • Создается экземпляр двумерного массива a.
    • Инициализируется переменная sumEndLine суммой элементов последней строки.
    • Циклом перебираются строки матрицы.
    • Для каждой строки проверяется условие: если произведение элементов этой строки совпадает со значением sumEndLine, то выводится сообщение и переменная fBreak устанавливается в истинное значение, чтобы прервать цикл.
    • После проверки всех строк выводится итоговая таблица матрицы.
    • Выводится символ - для разделения строк результатов.
    • Конец программы. Обратите внимание, что в этом коде нет вложенных списков.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы