Сортировка последней строки двувымерного массива
Задача состоит в том,что нужно отсортировать последний рядок массива по убыванию. Не понимаю,почему не работает код(ошибок в коде нет,просто сортировка не выполняется),помимо основной задачи нужно было выполнить нахождение максимального элемента,но с этим справился
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <ctime>
#define SIZE 6
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
//Создаем массив
int mass[SIZE][SIZE];
int max = mass[0][0];
//Заполняем массив и выводим его на экран
for (int i = 0; i < SIZE; ++i)
{
for (int j = 0 ; j < SIZE ;++j)
{
mass[i][j] = i + j + 1;
cout << mass[i][j] << "\t";
}
cout << endl;
}
//Находим максимальный элемент массива
for (int i = 0; i < SIZE; ++i)
for (int j = 0; j < SIZE; ++j)
if (max < mass[i][j]) max = mass[i][j];
cout << "Максимальный элемент: " << max << endl;
//Сортировка последней строки
for (int k = 0; k < SIZE - 1; ++k)
for (int j = 0; j < SIZE - 1 - k; ++j)
if (mass[SIZE][j + 1] > mass[SIZE][j])
{
int c = mass[SIZE][j + 1];
mass[SIZE][j + 1] = mass[SIZE][j];
mass[SIZE][j] = c;
}
//Выводим на экран отсортированную матрицу
for (int i = 0; i < SIZE; ++i)
{
for (int j = 0; j < SIZE; ++j)
{
cout << mass[i][j] << "\t";
}
cout << endl;
}
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Mikey
→ Ссылка
Моя ошибка заключалась в том, что я не учел того, что в массиве нумерация начинается с 0, следовательно вместо mass[SIZE][j] надо было написать [SIZE - 1][j]:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <ctime>
#define SIZE 6
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
srand(time(NULL));
//Создаем массив
int mass[SIZE][SIZE];
int max = mass[0][0];
//Заполняем массив и выводим его на экран
for (int i = 0; i < SIZE; ++i)
{
for (int j = 0 ; j < SIZE ;++j)
{
mass[i][j] = i + j + 1;
cout << mass[i][j] << "\t";
}
cout << endl;
}
//Находим максимальный элемент массива
for (int i = 0; i < SIZE; ++i)
for (int j = 0; j < SIZE; ++j)
if (max < mass[i][j]) max = mass[i][j];
cout << "Максимальный элемент: " << max << endl;
//Сортировка последней строки
for (int k = 0; k < SIZE - 1; ++k)
for (int j = 0; j < SIZE - 1 - k; ++j)
if (mass[SIZE - 1][j + 1] > mass[SIZE - 1][j])
{
int c = mass[SIZE - 1][j + 1];
mass[SIZE - 1][j + 1] = mass[SIZE - 1][j];
mass[SIZE - 1][j] = c;
}
//Выводим на экран отсортированную матрицу
for (int i = 0; i < SIZE; ++i)
{
for (int j = 0; j < SIZE; ++j)
{
cout << mass[i][j] << "\t";
}
cout << endl;
}
system("pause");
return 0;
}