Задать матрицу 8х8 с псевдослучайными числами и упорядочить побочную диагональ по убыванию - C (СИ)
Формулировка задачи:
Доброго времени суток, долго мучался с двумерным массивом и его упорядочиванием, в конце концов что то получилось, матрицу выводит, но считает не верно, ещё и после упорядочивания выводит матрицу не 8х8, а 7х10 с неполной последней строкой, подскажите, пожалуйста, в чём я ошибся?
Заранее спасибо!
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#define MIN_VALUE -100
#define MAX_VALUE 100
#define ROWS 8
#define COLS 8
int main(int argc, char **argv)
{
setlocale(LC_ALL, "RUSSIAN");
int A[8][8];
int i, k, n,t;
n = 8;
printf("Матрица до сортировки\n");
for (i = 0; i < ROWS; ++i)
{
for (k = 0; k < COLS; ++k)
{
A[i][k] = rand() % 50-25;//заплнене случайным числами
printf("%d\t", A[i][k]);
}
printf("\n"); // каждую строку матрицы выводим на новой строке
}
for(i = 0; i<n-1; i++)
{
for(k = i-1; k<n; k++)
{
if (A[k][n-1+k] < A[i][n-1+i])
{
t = A[i][n-1+k];
A[k][n-1+k] = A[i][n-1+i];
A[i][n-1+i] = t;
}
}
}
printf("Матрица после сортировки\n");
for (i = 0; i < ROWS; ++i)
{
for (k = 0; k < COLS; ++k)
{
printf("%d\t", A[i][k]);
}
}
return 0;
}Решение задачи: «Задать матрицу 8х8 с псевдослучайными числами и упорядочить побочную диагональ по убыванию»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#define ROWS 8
#define COLS 8
int main(int argc, char **argv)
{
setlocale(LC_ALL, "RUSSIAN");
int A[ROWS][COLS];
int i, k, t, j;
printf("Матрица до сортировки\n");
for (i = 0; i < ROWS; ++i){
for (k = 0; k < COLS; ++k)
printf("%3d", A[i][k] = rand() % 50-25);
printf("\n");
}
for(j = 0; j < ROWS; j++)
{
for(i = 0; i < ROWS - 1; i++)
{
for(k = COLS - 1; k > 0; k--)
{
if (A[i][k] > A[i + 1][k - 1])
{
t = A[i + 1][k - 1];
A[i + 1][k - 1] = A[i][k];
A[i][k] = t;
}
}
}
}
printf("Матрица после сортировки\n");
for (i = 0; i < ROWS; ++i){
for (k = 0; k < COLS; ++k)
printf("%3d", A[i][k]);
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде задается матрица 8х8 с помощью которой реализуется следующая логика:
- Инициализация матрицы A случайными числами от 25 до 49 с помощью функции rand() % 50-25.
- Вывод содержимого матрицы до сортировки.
- Упорядочивание побочной диагонали матрицы по убыванию с помощью алгоритма сортировки пузырьком.
- Вывод отсортированной матрицы.
- Завершение работы программы.