Задать матрицу 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.
- Вывод содержимого матрицы до сортировки.
- Упорядочивание побочной диагонали матрицы по убыванию с помощью алгоритма сортировки пузырьком.
- Вывод отсортированной матрицы.
- Завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д