Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2022, 02:16   #1
Vladimir12134
Новичок
Джуниор
 
Регистрация: 23.11.2022
Сообщений: 1
По умолчанию Двумерный массив Pascal

Имеется массив A измеримостью m на n. Найти строчку с наибольшей суммой элементов. Массив, номер строки и значение суммы выводятся на экран.
И если не затрудит,обьяснить в коде,что и как работает,буду очень благодарен!
Vladimir12134 вне форума Ответить с цитированием
Старый 23.11.2022, 05:18   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

fpc 3.2.2
Код:
program project1;

uses SysUtils;

var arr: array of array of LongInt; { Двумерный динамический массив }
    sum: LongInt; { Здесь посчитаем сумму }
    max: LongInt; { Здесь сохраним максимальное значение суммы }
    ind: LongInt; { Здесь сохраним индекс строки с максимальной суммой }
    i,j: LongInt; { Индексные переменные для циклов }

BEGIN
   Write('Введите количество строк (m): '); ReadLn(i);
   Write('Введите количество столбцов (n): '); ReadLn(j);
   SetLength(arr, i, j); { Определить размерность массива }
   WriteLn('Вводим элементы массива, в темпе и без дополнительных подсказок:');
   for i := Low(arr) to High(arr) do { Цикл по строкам }
      for j := Low(arr[i]) to High(arr[i]) do { Цикл по столбцам }
         ReadLn(arr[i, j]); { Считываем элемент i, j }
   ind := Low(arr); max := 0; { Считаем сумму элементов первой строки (инициализация значений) }
   for j := Low(arr[ind]) to High(arr[ind]) do { Цикл по строкам }
      inc(max, arr[ind, j]); { Суммируем элементы }
   for i := ind + 1 to High(arr) do begin { Цикл по строкам }
      sum := 0; { Инициализация суммы для i-ой строки }
      for j := Low(arr[i]) to High(arr[i]) do { Цикл по столбцам }
         inc(sum, arr[i, j]); { Суммируем элементы }
      if sum > max then begin { Находим максимум }
         ind := i; max := sum; { Сохраняем параметры строки с новым максимумом }
      end;
   end;
   WriteLn('Матрица поиска');
   for i := Low(arr) to High(arr) do begin { Цикл по строкам }
      for j := Low(arr[i]) to High(arr[i]) - 1 do { Цикл по столбцам }
         Write(arr[i, j], ', '); { Печатаем значения }
      WriteLn(arr[i, High(arr[i])]); { Завершаем печать строки }
   end;
   WriteLn('Номер строки с максимальной суммой элементов ', ind, '. Она равна ', max);
END.
Код:
$ ./project1
Введите количество строк (m): 5
Введите количество столбцов (n): 4
Вводим элементы массива, в темпе и без дополнительных подсказок:
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
Матрица поиска
1, 2, 3, 4
5, 6, 7, 8
9, 0, 1, 2
3, 4, 5, 6
7, 8, 9, 0
Номер строки с максимальной суммой элементов 1. Она равна 26
Вот тут можно посмотреть как она работает.

Последний раз редактировалось macomics; 23.11.2022 в 05:24.
macomics вне форума Ответить с цитированием
Старый 23.11.2022, 10:08   #3
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

macomics, сумма элементов первой строки равна 10 :D
Valick вне форума Ответить с цитированием
Старый 23.11.2022, 11:55   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
macomics, сумма элементов первой строки равна 10 :D
Это динамические массивы. Они нумеруются с 0. Строка с номером 1 это 5+6+7+8=26.
macomics вне форума Ответить с цитированием
Старый 23.11.2022, 13:56   #5
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Внутренние индексы массива никак не должны быть связаны с представлением.
Представление должно быть наитивным.
Если написать что "первая строка это строка 0, это конечно многое объяснит, но гораздо правильнее было бы утверждение "первая строка это строка 1" (и это не требует дополнительных подсказок)
Valick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив (Pascal) Vika300 Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2013 22:24
двумерный массив(pascal) Георгий Златов Помощь студентам 1 28.01.2013 08:22
Двумерный массив (Pascal) lemme Помощь студентам 5 02.02.2012 10:44
Двумерный массив на Pascal Daniboy Помощь студентам 5 16.02.2011 21:07
Pascal. Двумерный массив. Fonthreat Помощь студентам 1 29.03.2010 17:57