Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется определить координаты (индексы+1) всех максимальных элементов в массиве

using namespace std;
int main() {
    int n, m, k = 0;
  //входные данные 2 3
                 //7 10 9
                 //10 -6 10
    int a[100][100];
    int imax = 0, jmax = 0, imin = 0, jmin = 0;
    cin >> n >> m;
for (int i = 0; i < n; i++) {
  for (int j = 0; j < m; j++) {
    cin >> a[i][j];
  }
}
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if(a[i][j] > a[imax][jmax]){
              imax = i;
              jmax = j;
              k++;
            }
        }
    }
  for (int i = 0; i <= k; i++) {
    cout << imax + 1 << " " << jmax + 1 << endl;
    }
  //выводит только 1 2
  // а должен 2 3
            //7 10 9
            //10 -6 10
    return 0;
} ```

Ответы (2 шт):

Автор решения: AR Hovsepyan

Потому что вы выводите k раз одни и те же значения. Этот счетчик вам не нужен, нужно вывести все индексы элементов, которые имеют те же значения, что и a[imax][jmax]:

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 << endl;
            

В данном примере вы могли бы определить максимальный элемент при вводе и написать цикл для вывода.

→ Ссылка
Автор решения: Harry

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

Поэтому вам надо просто найти максимальное значение, а потом еще раз пройтись по всем элементам.

Максимально приближенно к вашему коду (хотя я бы использовал вектора, раз уж у вас С++):

#include <iostream>

using namespace std;

int main()
{
    int n, m, M;
    cin >> n >> m;
    //входные данные 2 3
    //7 10 9
    //10 -6 10
    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];
        }
    }

    M = a[0][0];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if(a[i][j] > M) M = a[i][j];
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if(a[i][j] == M) cout << i+1 << "  " << j+1 << endl;
        }
    }

}

См. https://ideone.com/JMw0FA

→ Ссылка