В квадратной матрице произвести сортировку тех строк, в которых на побочной диагонали стоит четное число
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
srand(time(NULL));
const int n = 6;
int matr[n][n];
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; j++)
{
matr[i][j] = rand() % 100;//Заполняем массив случайными числами до 100
cout << matr[i][j] << "\t|\t"; //Вывод на экран
}
cout << endl;
}
for (int i = 0; i < n; ++i)
{//Вибираем четные элементы побочной диагонали матрицы
if (matr[i][n - 1 - i] % 2 == 0)
{
for (int k = 0; k < n - 1; ++k) //Сортировка
for (int i = 0; i < n - 1 - k; ++i)
{
if (matr[i][i + 1] < matr[i][i])
{
int c = matr[i][i + 1];
matr[i][i + 1] = matr[i][i];
matr[i][i] = c;
}
}
}
}
cout << endl <<"Отсортированная матрица: " << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << matr[i][j] << "\t|\t"; //вывод на экран новой марицы
}
cout << endl;
}
system("pause");
return 0;
}
Не сортирует. Я даже не знаю,в чем проблема
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Вот, на С++, стандартная сортировка:
#include <iostream>
#include <time.h>
#include <algorithm>
using namespace std;
int main() {
srand(time(NULL));
const int n = 6;
int matr[n][n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; j++) {
matr[i][j] = rand() %
100;//Заполняем массив случайными числами до 100
cout << matr[i][j] << "\t|\t"; //Вывод на экран
}
cout << endl;
}
for (int i = 0; i < n; ++i) {
//Вибираем четные элементы побочной диагонали матрицы
if (matr[i][n - 1 - i] % 2 == 0) {
sort(&matr[i][0], &matr[i][0] + n);
}
}
cout << endl << "Отсортированная матрица: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matr[i][j] << "\t|\t"; //вывод на экран новой марицы
}
cout << endl;
}
}
Вот ее работа: https://ideone.com/TrTBkq
Если категорически нелязя использовать sort, то можно так:
for (int i = 0; i < n; ++i) {
//Вибираем четные элементы побочной диагонали матрицы
if (matr[i][n - 1 - i] % 2 == 0) {
for (int k = 0; k < n - 1; ++k) //Сортировка
for (int j = 0; j < n - 1 - k; ++j) {
if (matr[i][j + 1] < matr[i][j]) {
int c = matr[i][j + 1];
matr[i][j + 1] = matr[i][j];
matr[i][j] = c;
}
}
}
}