Найти максимальные элементы столбцов матрицы

Задача

Найти максимальный элемент каждого столбца матрицы.

Пояснение к задаче и алгоритм решения

При поиске наибольших элементов в столбцах внешний цикл должен перебирать столбцы, а внутренний - элементы в столбцах. Это значит, что во внутреннем цикле меняется первый индекс элемента, второй остается постоянным в рамках одной итерации внешнего цикла.

В теле внешнего цикла сначала предполагается, что наибольшим является первый элемент текущего столбца. Первый элемент каждого столбца имеет индекс строки, равный 1 (или 0 при индексации с нуля). Второй индекс - это номер столбца, определяется счетчиком внешнего цикла.

Далее в теле внешнего цикла выполняется внутренний цикл, перебирающий элементы текущего столбца, начиная со второго элемента столбца. В теле внутреннего цикла текущий элемент сравнивается с тем, что записан в переменной-максимуме. Если текущий больше, то он присваивается этой переменной.

После завершения внутреннего цикла переменная-максимум будет содержать наибольший элемент столбца, который можно вывести на экран.

Исходный код на языке программирования Pascal

const N = 15; M = 10;
var
    arr: array[1..N,1..M] of byte;
    i,j,max: byte;    
begin
    randomize;
    for i:=1 to N do begin
        for j:=1 to M do begin
            arr[i,j] := random(256);
            write(' |',arr[i,j]:3,'| ');
        end;
        writeln;
    end;
    for i:=1 to M do
        write(' ----- ');
    writeln;
    for j:=1 to M do begin
        max := arr[1,j];
        for i:=2 to N do
            if arr[i,j] > max then
                max := arr[i,j];
        write('  ',max:3,'  ');
    end;
    writeln;
end.

Особенности решения на языке программирования Pascal

Пример(ы) выполнения программы на языке Pascal:

 | 75|  |230|  | 21|  | 95|  |219|  |102|  | 64|  |125|  |  8|  |132| 
 |190|  | 73|  |127|  | 85|  |110|  |188|  | 45|  |108|  |104|  |233| 
 | 85|  |160|  | 47|  |158|  | 32|  | 75|  | 59|  |149|  |175|  |226| 
 |179|  |208|  |239|  |238|  |120|  | 83|  |120|  |135|  |252|  | 19| 
 | 33|  |217|  |247|  | 82|  |  0|  |125|  |190|  | 53|  | 87|  |186| 
 |239|  | 48|  | 29|  | 35|  |210|  | 96|  | 46|  | 17|  |106|  |225| 
 |232|  |  1|  |201|  |  1|  | 54|  |249|  | 46|  |179|  |122|  | 58| 
 | 66|  |190|  |161|  | 84|  | 88|  | 33|  |201|  | 64|  | 43|  |  7| 
 |206|  |114|  |196|  |  4|  |137|  |165|  | 63|  |144|  |183|  |121| 
 |151|  |  9|  |161|  |120|  |197|  |228|  | 20|  |121|  |176|  |217| 
 |109|  | 19|  |188|  |105|  |114|  |230|  |217|  |172|  |194|  |127| 
 |138|  |222|  |116|  |132|  | 92|  |105|  |222|  | 73|  | 94|  | 16| 
 | 30|  |127|  |125|  | 54|  |134|  |240|  | 75|  |227|  |215|  | 38| 
 | 87|  | 64|  |167|  |191|  |212|  |157|  | 62|  |231|  |166|  |177| 
 |184|  |179|  |201|  | 19|  |242|  |185|  | 31|  |226|  |101|  |123| 
 -----  -----  -----  -----  -----  -----  -----  -----  -----  ----- 
  239    230    247    238    242    249    222    231    252    233

Исходный код на языке программирования C

#include <stdio.h>
#define N 15
#define M 10
main() {
    int arr[N][M], i, j, max;
    srand(time(NULL));
    for (i=0; i<N; i++) {
        for (j=0; j<M; j++) {
            arr[i][j] = rand() % 256;
            printf(" |%3d| ", arr[i][j]);
        }
        printf("\n");
    }
    for (j=0; j<M; j++)
        printf(" ----- ");
    printf("\n");
    for (j=0; j<M; j++) {
        max = arr[0][j];
        for (i=1; i<N; i++)
            if (arr[i][j] > max)
                max = arr[i][j];
        printf("  %3d  ", max);
    }
    printf("\n");
}

Исходный код на языке программирования Python

from random import random
N = 15
M = 10
arr = []
for i in range(N):
    lst = []
    for j in range(M):
        lst.append(int(random() * 256))
    arr.append(lst)
for i in range(N):
    for j in range(M):
        print(" |%3d| " % arr[i][j], end='')
    print()
for i in range(M):
    print(" ----- ", end='')
print()
for j in range(M):
    mx = arr[0][j]
    for i in range(N):
        if arr[i][j] > mx:
            mx = arr[i][j]
    print(" |%3d| " % mx, end='')
print()

Исходный код на языке программирования КуМир

алг
нач
  цел N = 15, M = 10
  целтаб t[1:N,1:M]
  цел mx, i, j
  нц для i от 1 до N
    нц для j от 1 до M
      t[i,j] := irnd(256)
      вывод " |",t[i,j]:3,"| "
    кц
    вывод нс
  кц
  нц для i от 1 до M
    вывод " ----- "
  кц
  вывод нс
  нц для j от 1 до M
    mx := t[1, j]
    нц для i от 2 до N
      если t[i,j] > mx то
        mx := t[i,j]
      все
    кц
    вывод '  ',mx:3,'  '
  кц
кон

Исходный код на языке программирования Basic

N = 15
M = 10
dim arr(N,M)
for i=0 to N-1
        for j=0 to M-1
                arr[i,j] = int(rand*90)+10
                print arr[i,j] + "  ";
        next j
        print
next i
for j=0 to M-1
        print "-----";
next j
print
for j=0 to M-1
        max = arr[0,j]
        for i=1 to N-1
                if arr[i,j] > max then max = arr[i,j]
        next i
        print max + "  ";
next j
print

Тема

Матрицы

Уровень сложности

Средний

Дата публикации