Задать матрицу 8х8 с псевдослучайными числами и упорядочить побочную диагональ по убыванию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, долго мучался с двумерным массивом и его упорядочиванием, в конце концов что то получилось, матрицу выводит, но считает не верно, ещё и после упорядочивания выводит матрицу не 8х8, а 7х10 с неполной последней строкой, подскажите, пожалуйста, в чём я ошибся?
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <stdlib.h>
  4. #define MIN_VALUE -100
  5. #define MAX_VALUE 100
  6. #define ROWS 8
  7. #define COLS 8
  8. int main(int argc, char **argv)
  9. {
  10. setlocale(LC_ALL, "RUSSIAN");
  11. int A[8][8];
  12. int i, k, n,t;
  13. n = 8;
  14. printf("Матрица до сортировки\n");
  15. for (i = 0; i < ROWS; ++i)
  16. {
  17. for (k = 0; k < COLS; ++k)
  18. {
  19. A[i][k] = rand() % 50-25;//заплнене случайным числами
  20. printf("%d\t", A[i][k]);
  21. }
  22. printf("\n"); // каждую строку матрицы выводим на новой строке
  23. }
  24. for(i = 0; i<n-1; i++)
  25. {
  26. for(k = i-1; k<n; k++)
  27. {
  28. if (A[k][n-1+k] < A[i][n-1+i])
  29. {
  30. t = A[i][n-1+k];
  31. A[k][n-1+k] = A[i][n-1+i];
  32. A[i][n-1+i] = t;
  33. }
  34. }
  35. }
  36. printf("Матрица после сортировки\n");
  37. for (i = 0; i < ROWS; ++i)
  38. {
  39. for (k = 0; k < COLS; ++k)
  40. {
  41. printf("%d\t", A[i][k]);
  42. }
  43. }
  44. return 0;
  45. }
Заранее спасибо!

Решение задачи: «Задать матрицу 8х8 с псевдослучайными числами и упорядочить побочную диагональ по убыванию»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <stdlib.h>
  4. #define ROWS    8
  5. #define COLS    8
  6.  
  7. int main(int argc, char **argv)
  8. {
  9.     setlocale(LC_ALL, "RUSSIAN");
  10.     int A[ROWS][COLS];
  11.     int i, k, t, j;
  12.     printf("Матрица до сортировки\n");
  13.     for (i = 0; i < ROWS; ++i){
  14.         for (k = 0; k < COLS; ++k)
  15.             printf("%3d", A[i][k]  = rand() % 50-25);
  16.         printf("\n");
  17.     }
  18.     for(j = 0; j < ROWS; j++)
  19.         {
  20.         for(i = 0; i < ROWS - 1; i++)
  21.         {
  22.             for(k = COLS - 1; k > 0; k--)
  23.             {
  24.                 if (A[i][k] > A[i + 1][k - 1])
  25.                 {
  26.                     t = A[i + 1][k - 1];
  27.                     A[i + 1][k - 1] = A[i][k];
  28.                     A[i][k] = t;
  29.                 }
  30.             }
  31.         }
  32.     }
  33.     printf("Матрица после сортировки\n");
  34.     for (i = 0; i < ROWS; ++i){
  35.         for (k = 0; k < COLS; ++k)
  36.             printf("%3d", A[i][k]);
  37.         printf("\n");
  38.     }
  39.     return 0;
  40. }

Объяснение кода листинга программы

В этом коде задается матрица 8х8 с помощью которой реализуется следующая логика:

  1. Инициализация матрицы A случайными числами от 25 до 49 с помощью функции rand() % 50-25.
  2. Вывод содержимого матрицы до сортировки.
  3. Упорядочивание побочной диагонали матрицы по убыванию с помощью алгоритма сортировки пузырьком.
  4. Вывод отсортированной матрицы.
  5. Завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы