Как найти максимальный элемент столбца двумерного массива

    #include <iostream>
using namespace std;

int main()
{
    const int ROWS = 5;
    const int COLS = 5;

    float array[ROWS][COLS];

    int count = 0;

    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            cout << (array[i][j] = rand() % 10) << "t";
        }
        cout << endl;
    }

    /*for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            if (array[j][i] == 0)
                count++;
        }
    }*/

    int tempmax = array[0][0];
    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            if (array[j][i] > tempmax)
            {
                tempmax = array[j][i];
            }
        }
    }
    
    cout << tempmax;

задан 4 мая 2022 в 11:11

Max Kapko's user avatar

2

for (int j = 0; j < COLS; j++)
{
    int tempmax = array[0][j];
    for (int i = 1; i < ROWS; i++)
        if (array[i][j] > tempmax)
            tempmax = array[i][j];
    cout << tempmax;
}

«Вот так как-то» (с)

ответ дан 4 мая 2022 в 11:36

Harry's user avatar

HarryHarry

214k15 золотых знаков117 серебряных знаков229 бронзовых знаков

2

Раз нужно найти максимум в столбце, то и внешний цикл делайте по столбцам, в начале цикла задавая временный максимум

ответ дан 4 мая 2022 в 11:19

MBo's user avatar

MBoMBo

47.8k1 золотой знак17 серебряных знаков40 бронзовых знаков

1

Как написал @MBo сначала цикл по столбцам

int tempmax[COLS]; // максимальных значений столько, сколько столбцов
for (int j = 0; j < COLS; j++) // сначала цикл по столбцам
{
  tempmax[j] = array[0][j]; // первоначальное значение == первому элементу
  for (int i = 1; i < ROWS; i++)  // внутри - цикл по строкам      
  {
     if (array[i][j] > tempmax[j])
     {
        tempmax[j] = array[i][j];
     }
  }
}

ответ дан 4 мая 2022 в 11:46

DmitryK's user avatar

DmitryKDmitryK

4,4961 золотой знак5 серебряных знаков19 бронзовых знаков

1

I am trying to find min (by row) and max (by column) element in two-dimensional (4,4) array and then store them in new array (5,5).

That is how it should look for new array (5,5):

1 2 3 4 min
5 6 7 8 min
4 4 4 5 min
3 5 5 6 min
m m m m  0

*m — max

Here it is the entire code:

#include <iostream>
using namespace std;
int main() {
    int A[4][4];/*First array*/
    int i, j;


    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++) {
            cout << "n A[" << i + 1 << "][" << j + 1 << "]=";
            cin >> A[i][j];
        }

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++)
            cout << A[i][j] << "t";

        cout << "n";
    }
    {
        int min[4];/* find min on each row*/
        for (i = 0; i < 4; i++) {
            min[i] = A[0][i];
            for (j = 1; j < 4; j++) {
                if (min[i] > A[i][j])
                    min[i] = A[i][j];
            }
        }
        int newarr[5][5];/* here i create the new array 5,5)*/
        int max[5] = { 1,2,3,4,5 };
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4; j++) {
                newarr[i][j] = A[i][j];
                newarr[i][5] = max[i];
            }
        }

        for (j = 0; j < 4; j++)
            newarr[5][j] = min[j];
        cout << newarr[5][j] << "t";
        cout << "n";
}

}

I put random elements to max. Because so far I only test. But once I started my program it show correct only the first array. And where should be the new array it shows zero. Here it is the outcome of the debugging:

5   4   3   1   
5   6   7   9   
4   2   3   9   
4   8   4   6   
0   

How to fix it?
And how to put zero in the last element (as you can see in the first table for the new array).

coal chamber

0 / 0 / 0

Регистрация: 12.03.2018

Сообщений: 32

1

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

25.04.2018, 18:53. Показов 6102. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Можете помочь. Как сделать чтобы после матрицы отображались макcимальные элементы из столбцов? Что добавить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,a[20][20];
cout<<"Введите количество строк ="; //ввод количества строк
cin>>N;
cout<<"Введите количество столбцов ="; //ввод количества столбцов
cin>>M;
cout<<"Введите элементы матрицы n";
//цикл по переменной i, в которой перебираем строки матрицы
for (i=0; i<N; i++)
//цикл по переменной j, в котором перебираем элементы внутри строки
for (j=0; j<M; j++)
cin>>a[i][j]; //ввод очередного элемента матрицы
cout<<"matrix A n";
for (i=0; i<N; i++)
{
//цикл по переменной i, в котором перебираем строки матрицы
for (j=0; j<M; j++)
cout<<a[i][j]<<"t"; //вывод очередного элемента матрицы
cout<<endl; //переход на новую строку после вывода всех элементов строки
}
 
return 0;
}



0



k0vpack

82 / 78 / 34

Регистрация: 13.02.2018

Сообщений: 1,347

25.04.2018, 21:21

2

coal chamber, объясню, думаю сам догадаешься, создай массив (только в данном случае) переменных int max[20] (как у тебя видно), после прохождение каждого столбца матрицы определяй максимальный элемент, вот так:

C++
1
2
3
4
5
6
7
8
9
10
int max[20];
for(int i = 0; i < M; i++)
max[i] = a[0][i];
for(int i = 1; i < N;  i++)
{
    for(int j = 1; j < M; j++)
{
     if(a[i][j] > max) max = a[i][j];
}
}

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



0



Yetty

7427 / 5021 / 2891

Регистрация: 18.12.2017

Сообщений: 15,694

26.04.2018, 01:09

3

Цитата
Сообщение от k0vpack
Посмотреть сообщение

создай массив … переменных int max[20

не стоит создавать массив там где это не нужно

coal chamber,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int N, M, max=0;
    cout <<"N="; cin >>N;
    cout <<"M="; cin >>M;
    
      int **a = new int*[N]; 
    for (int i = 0; i < N; i++)
      a[i]=new int[M];
    
    for (int i = 0; i < N; i++)
    {
    for (int j = 0; j < M; j++)
    {
    a[i][j]=rand()%9 + 1;
    cout <<a[i][j]<<" ";
    }
    cout << endl;
    }
    cout << endl;
    
    for (int j = 0; j < M; j++)
    {
    for (int i = 0; i < N; i++) 
    if (i==0 || a[i][j]>max) max=a[i][j];
    cout <<max<<" ";
    }
    cout << endl;
    
 
    for (int i = 0; i < N; i++)
    delete [] a[i];
    delete [] a;
 
system("pause");
return 0;
}



0



82 / 78 / 34

Регистрация: 13.02.2018

Сообщений: 1,347

26.04.2018, 18:27

4

Yetty,

Цитата
Сообщение от Yetty
Посмотреть сообщение

cout <<max<<» «;

я понимаю что задача была

Цитата
Сообщение от coal chamber
Посмотреть сообщение

отображались

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

Не по теме:

да ладно, я не дочитал что нужно просто вывести



0



coal chamber

0 / 0 / 0

Регистрация: 12.03.2018

Сообщений: 32

26.04.2018, 20:08

 [ТС]

5

а что теперь добавить , чтобы из каждого полученного максимального значения вычесть каждое число из соответствующего столбца и отобразить это в виде матрицы?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,a[20][20],max=0;
cout<<"Введите количество строк ="; //ввод количества строк
cin>>N;
cout<<"Введите количество столбцов ="; //ввод количества столбцов
cin>>M;
cout<<"Введите элементы матрицы n";
//цикл по переменной i, в которой перебираем строки матрицы
for (i=0; i<N; i++)
//цикл по переменной j, в котором перебираем элементы внутри строки
for (j=0; j<M; j++)
cin>>a[i][j]; //ввод очередного элемента матрицы
cout<<"Матрица n";
for (i=0; i<N; i++)
{
//цикл по переменной i, в котором перебираем строки матрицы
for (j=0; j<M; j++)
cout<<a[i][j]<<"t"; //вывод очередного элемента матрицы
cout<<endl; //переход на новую строку после вывода всех элементов строки
}
cout<<"максимальные элементы столбцов "; //ввод количества строк
 for (int j = 0; j < M; j++)
    {
    for (int i = 0; i < N; i++) 
    if (i==0 || a[i][j]>max) max=a[i][j];
    cout <<max<<" ";
    }
    cout << endl;
  cout<<"Вычитаем из максимальных элементов столбцов значения элементов матрицыnПолучаем матрицу рисков R=n "; 
return 0;
}



0



Перейти к содержанию

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

Просмотров 7.1к. Обновлено 15 октября 2021

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

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

В теле внешнего цикла сначала предполагается, что наибольшим является первый элемент текущего столбца. Первый элемент каждого столбца имеет индекс строки, равный 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:

| 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

Язык Си


#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

найти максимальный элемент столбца матрицы 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-256


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

const
  n = 30;
  m = 30;
 
var
  A: array[1..n, 1..m] of integer;
  i, j, max: integer;
  
begin
  cls;
  writeln('Вводим двумерный массив:');
  writeln;
  randomize;
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(100) - 50;
      write(a[i, j]:4)
    end;
    writeln
  end;  
  writeln;
  writeln('Максимальный элемент каждого столбца:');
  writeln;
  for j := 1 to m do
  begin
    max := -50;
    for i := 1 to n do
      if max < a[i, j] then max := a[i, j];
    write(max:4)  
  end
end.

Понравилась статья? Поделить с друзьями:
  • Как найти проститутку в оренбурге
  • Fatal error call of chernobyl как исправить
  • Алгебра как найти сумму геометрической прогрессии
  • Как исправить рис если он получился клейким
  • Как найти почту с факсами