Похоже, у вас проблемы с пониманием работы массивов и циклов.Сначала прочитайте эту статью о loops , затем эту статью о многомерных массивах .Теперь, что касается вашего кода:
for (i = 0; i < rows - 1; rows++) {
Что вы на самом деле здесь делаете, это инкриминирующая переменная rows
, которая хранит количество строк в вашем array[rows][columns]
.В результате ваш цикл не работает должным образом.Чтобы пройти через массив, вам нужно указать переменную i
, чтобы вы могли обращаться к элементам массива, используя индекс в квадратных скобках.
Например: вызов array[i]
, в то время как i = 3
вернет вам четвертый элемент массива.(поскольку массивы начинаются с 0)
Теперь сортировка.Вы пытаетесь использовать цикл while (1)
, который является бесконечным, и разрыв, который никогда не будет выполняться должным образом.
Сортировка двумерного массива фактически сортирует x одномерные массивы.Итак, вам нужно реализовать простую пузырьковую сортировку для одномерного массива и обернуть ее дополнительным циклом for
, чтобы пройти через ряды желобов.
int m;
int temp;
for (i = 0; i < rows; i++) { // this will "switch" actual rows
for (j = 0; j < columns; j++) { // this will traverse through elements
for (m = 0; m < columns - 1; m++) { // this will traverse just like the
if (array[i][j] > array[i][m]) { // previous loop, but one element
temp = array[i][j]; // ahead, so you can compare them
array[i][j] = array[i][m];
array[i][m] = temp; // swapping elements array[row][element]
// with array[row][one element ahead]
}
}
}
}
UPD:
Для отображениямассив элементов max, сначала создайте массив, в котором вы будете хранить ваши значения max.Для моего фрагмента это int array_max[rows]
.Он запишет ваши максимальные значения по мере их нахождения.Чтобы сделать это, добавьте: (где вы этот cout был)
cout << "Largest element in row" << i << "is: " << max << endl;
array_max[i] = max;
А теперь, чтобы отсортировать новый массив и правильно распечатать его, попробуйте это:
for (i = 0; i < rows; i++) {
for (j = 0; j < rows - 1; j++) {
if (array_max[i] > array_max[j]) {
temp = array_max[i];
array_max[i] = array_max[j];
array_max[j] = temp;
}
}
}
for (i = 0; i < rows; i++) {
cout << array_max[i] << " ";
}
И, наконец,добавьте #include <ctime>
в ваш проект, чтобы получать новые случайные значения при каждом запуске вашей программы.