Получить массив из номеров максимальных элементов строк матрицы - Pascal ABC
Формулировка задачи:
Здравствуйте! Помогите, пожалуйста с задачей.
Получить одномерный массив, состоящий из номеров максимальных элементов соответствующих строк матрицы.
В полученном векторе решить задачу поиска 'количества четных элементов;
Отсортировать в матрице строки по убыванию значений элементов в столбце с номером, заданным пользователем.
Решение задачи: «Получить массив из номеров максимальных элементов строк матрицы»
textual
Листинг программы
type TLine = Array Of ShortInt; TArray = Array Of TLine; procedure PrintLine(const l: TLine); var j: Byte; begin for j := 0 to Length(l) - 1 do Write(l[j]:4); WriteLn; end; procedure PrintArray(const ar: TArray); var i, j: Byte; begin for i := 0 to Length(ar) - 1 do PrintLine(ar[i]); end; procedure InitArray(var ar: TArray); var i, j, n, m: Byte; begin Write('n='); ReadLn(n); Write('m='); ReadLn(m); SetLength(ar, n, m); for i := 0 to Length(ar) - 1 do for j := 0 to Length(ar[i]) - 1 do ar[i, j] := Random(199) - 99; PrintArray(ar); end; function LineMaxId(const l: TLine): Byte; var Result, j: Byte; begin Result := 0; for j := 1 to Length(l) - 1 do if (l[j] > l[Result]) then Result := j; LineMaxId := Result; end; procedure GetMaxs(const ar: TArray; var maxs: TLine); var i: Byte; begin SetLength(maxs, Length(ar)); for i := 0 to Length(ar) - 1 do maxs[i] := LineMaxId(ar[i]) + 1; PrintLine(maxs); end; function HowMuchEvens(const l: TLine): Byte; var Result, i: Byte; begin Result := 0; for i := 0 to Length(l) - 1 do if (Not Odd(l[i])) then Inc(Result); HowMuchEvens := Result; end; procedure SwapLines(var x, y: TLine); var z: TLine; begin z := x; x := y; y := z; end; procedure SortByColumn(var ar: TArray; const j: Byte); var i, k: Byte; begin for i := 0 to Length(ar) - 1 do for k := i to Length(ar) - 2 do if (ar[k, j] < ar[k + 1, j]) then SwapLines(ar[k], ar[k + 1]); PrintArray(ar); end; var ar: TArray; max: TLine; column: Byte; begin InitArray(ar); Write('Max ids: '); GetMaxs(ar, max); WriteLn('Evens in max id: ', HowMuchEvens(max)); Write('Input column: '); ReadLn(column); SortByColumn(ar, column - 1); end.
Объяснение кода листинга программы
- В функции InitArray создается массив ar с n строками и m столбцами.
- Заполняются строки массива случайными числами от 0 до 198.
- Вызывается функция LineMaxId для каждой строки массива ar, и возвращается номер строки с максимальным значением.
- В функции GetMaxs создается новый массив maxs той же длины, что и ar, и заполняется номерами строк, которые содержат максимальные значения.
- Выводится массив maxs.
- В функции HowMuchEvens подсчитывается количество четных строк в массиве ar.
- Выводится количество четных строк.
- В функции SwapLines меняются местами две строки x и y.
- В функции SortByColumn сортируется массив ar по столбцу, указанному в переменной column.
- Выводится отсортированный массив ar.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д