1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
1

Определить индексы всех максимальных элементов в двумерном массиве

27.04.2020, 15:41. Показов 11804. Ответов 11

Author24 — интернет-сервис помощи студентам
Здравствуйте, я изучаю C++ и сейчас прохожу тему двумерные массивы. Попалась задачка, где требуется определить индексы всех максимальных элементов в массиве. Условие задачи таково:
Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется определить индексы всех максимальных элементов в массиве.

Формат входных данных:
Первая строка входного файла содержит два натуральных числа n и m (n,m≤100) — количество строк и столбцов массива a соответственно. Следующие n строк содержат по m целых чисел (|aij|≤1000) — элементы массива a.
Формат выходных данных:
Выведите k строк, где k — количество максимальных элементов массива. Каждая строка должна содержать два числа, разделённых пробелом — номер строки и столбца каждого элемента соответственно. Максимальные элементы должны быть перечислены в порядке возрастания номера их строки. Если же номера их строк совпадают, в порядке возрастания столбцов.
Вот мой неправильный код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int main(){
  int arr[1000][1000],n,m;
  cin>>n>>m;
  for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      cin>>arr[n][m];
    }
  }
  int maxi = -1, maxj = -1;
  for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      if(arr[i][j]>arr[maxi][maxj])
      maxi = i;
      maxj = j;
     // maxi++; maxj;
    } 
  }
  cout<<maxi<<" "<<maxj<<" "<<arr[maxi][maxj]<<endl;
 
 
return 0;
}
Заранее спасибо за помощь!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2020, 15:41
Ответы с готовыми решениями:

Как в двумерном массиве определить сумму квадратов всех элементов массива?
Здравствуйте. Я не могу найти нигде примеры того как можно в двумерном массиве определить сумму...

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

В двумерном массиве найти сумму максимальных элементов его столбцов
Здравствуйте . Задание: В двумерном массиве A найти сумму максимальных элементов его столбцов ....

В двумерном массиве найти введенное с клавиатуры число и вывести индексы всех чисел равных введенному
1) Написать программу, которая в двумерном массиве находит введенное с клавиатуры число и выводит...

11
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
27.04.2020, 15:47 2
Cross_ChEp, для всех конструкций for и if расставьте все фигурные скобки не взирая на однострочные инструкции и поступайте так в преть всегда, пока не освоитесь с однострочными операциями
1
1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
27.04.2020, 15:52  [ТС] 3
Спасибо большое за ответ, всё расставил, но всё равно выводится фигня.
при входных данных:
2 3
7 10 9
10 -6 10
должно было вывести:
1 2
2 1
2 3
а у меня выводит: -1 -1 0.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.04.2020, 16:05 4
Cross_ChEp, строка 11:
C++
1
int maxi = 0, maxj = 0;
и добавьте цикл:
C++
1
2
3
4
5
for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      if(arr[i][j]==arr[maxi][maxj]) cout << maxi << " " << maxj <<endl;
}
}
это если индексы нужно вывести ( если номера cout << maxi + 1 << " " << maxj + 1 <<endl; )

массив лучше применить динамический
1
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
27.04.2020, 16:09 5
Cross_ChEp, возьмите за правило при поиске максимумов и минимумов (при последовательном обходе массивов) брать первоначальное значение искомого элемента из нулевого элемента массива, если речь об индексах, то нулевой индекс.
Далее анализируйте что Вы делаете - от вас просят определить индекс максимального элемента в каждой строке массива, то есть в Вашем случае должно быть три ответа (по количеству строк) следовательно Вам нужен либо массив ответов на три элемента, либо выводить ответ сразу в цикле по окончании обхода каждой строки
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.04.2020, 16:20 6
Цитата Сообщение от Annemesski Посмотреть сообщение
от вас просят определить индекс максимального элемента в каждой строке массива
где Вы такое нашли ?

Добавлено через 6 минут
извините, неправильно написал вывод, исправил:
C++
1
2
3
4
5
for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      if(arr[i][j]==arr[maxi][maxj]) cout << i << " " << j <<endl;
}
}
если номера cout << i + 1 << " " << j + 1 << endl;
1
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
27.04.2020, 16:36 7
Yetty, опередлить индексы всех максимальных элементов в массиве - я понимаю как максимальные по каждой строке или по каждому столбцу или и те и другие
0
1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
27.04.2020, 16:38  [ТС] 8
Спасибо большое, но все равно выводит не то.
Вот что у меня выводит:
1 1
1 2
1 3
2 1
2 2
2 3
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.04.2020, 16:42 9
Цитата Сообщение от Annemesski Посмотреть сообщение
опередлить индексы всех максимальных элементов в массиве - я понимаю как максимальные по каждой строке или по каждому столбцу или и те и другие
неправильно понимаете. если взять пример ТС максимальный элемент в массиве 10, индексы максимального:
0 1
1 0
1 2
номера:
1 2
2 1
2 3

Добавлено через 2 минуты
Цитата Сообщение от Cross_ChEp Посмотреть сообщение
выводит не то
показывайте код
0
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
27.04.2020, 16:45 10
Yetty, вкурил найти индексы элементов равных максимальному
Cross_ChEp, у Вас должно получиться 3 вложенных ("двойных") цикла:
1. ввод данных
2. поиск максимального элемента
3. вывод индексов
1
1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
27.04.2020, 16:57  [ТС] 11
Цитата Сообщение от Yetty Посмотреть сообщение
показывайте код
вот он:
C++ (Qt)
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(){
  int arr[1000][1000],n,m;
  cin>>n>>m;
  for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      cin>>arr[n][m];
    }
  }
  int maxi = 0, maxj = 0;
  for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
      if(arr[i][j]==arr[maxi][maxj]){
          arr[i][j] = arr[maxi][maxj];
      }
           
}
}
    for(int i =0; i<n; i++){
    for(int j = 0; j<m; j++){
        cout << i + 1 << " " << j + 1 << endl;
    }
    }
 
return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.04.2020, 17:09 12
Лучший ответ Сообщение было отмечено Cross_ChEp как решение

Решение

Cross_ChEp, сравните
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
#include <iostream>
using namespace std;
 
int main()
{
    int n, m, imax=0, jmax=0;
    cin >> n >> 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++)
        {
        cin >> a[i][j];
        if(a[i][j]>a[imax][jmax]) {imax=i;jmax=j;}
        }
    }   
    
    for(int i = 0; i < n; i++)    
        for(int j = 0; j < m; j++)    
        if(a[i][j]==a[imax][jmax]) cout << i+1 << " " << j+1 << "\n";
        
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
1
27.04.2020, 17:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2020, 17:09
Помогаю со студенческими работами здесь

В двумерном массиве M[1.6,1.4] определить индексы наименьшего элемента в каждой строке
В двумерном массиве M определить индексы наименьшего элемента в каждой строке. ВЫВЕСТИ ЭТИ ЭЛЕМЕНТЫ...

В двумерном массиве столбцы поставить в порядке возрастания максимальных элементов столбцов
program lab9; const n=4; m=4; var a:array of real; max:array of real; i,j,k,l:integer;...

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

В двумерном массиве вычислить частное от деления произведения всех gоложительных элементов на произведение всех отрицательных элементов
В двухмерном массиве вычислить частное от деления произведения всех положительных элементов на...

Найти индексы всех максимальных элементов, не принадлежащей главной и побочной диагоналям матрицы
В данной целочисленной матрице порядка 17 укажите индексы всех максимальных элементов, не...

Определить индексы нескольких максимальных элементов массива
Дан одномерный целочисленный массив. Составьте программу определения индекса максимального элемента...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru