Сортировка строк - ошибка в коде - C (СИ)

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

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

Здравствуйте! Прошу помощи в решении задачи. Нужно создать функцию для заполнения массива в диапазоне, указанном пользователем, функцию для вывода массива на экран и функцию сортировки каждой строки массива. Вот код , который у меня получился. Компилируется, но большинстве случаев возникает ошибка при выполнении функции сортировки строк (иногда работает).
Листинг программы
  1. #include <iostream>
  2. #include <time.h>
  3. using namespace std;
  4.  
  5. //Заполнение двумерного массива случайными числами в диапазоне, указанном пользаователем
  6. void create(int mas[][5], int row)
  7. {
  8. int min, max, temp;
  9. cout << "Нижняя граница диапазона:";
  10. cin >> min;
  11. cout << "Верхняя граница диапазона:";
  12. cin >> max;
  13. if (max < min)
  14. {
  15. temp = max;
  16. max = min;
  17. min = temp;
  18. }
  19. for (size_t i = 0; i < row; i++)
  20. {
  21. for (size_t j = 0; j < 5; j++)
  22. {
  23. mas[i][j] = min + rand() % (max - min + 1);
  24. }
  25. }
  26. }
  27. //вывод на экран
  28. void show(int mas[][5], int row)
  29. {
  30. for (size_t i = 0; i < row; i++)
  31. {
  32. for (size_t j = 0; j < 5; j++)
  33. {
  34. cout << "[" << i << "][" << j << "]=\t" << mas[i][j] << "\t";
  35. }
  36. cout << "\n";
  37. }
  38. }
  39. //Сортировка каждой строки
  40. void row(int mas[][5], int row)
  41. {
  42. int temp, obmen, kol = 0;
  43. for (size_t i = 0; i < row - 1; i++)
  44. {
  45. do
  46. {
  47. obmen = 0;
  48. for (size_t j = 0; j < 5 - 1 - kol; j++)
  49. {
  50. if (mas[i][j + 1] < mas[i][j])
  51. {
  52. temp = mas[i][j];
  53. mas[i][j] = mas[i][j + 1];
  54. mas[i][j + 1] = temp;
  55. obmen = 1;
  56. }
  57. }
  58. kol++;
  59. } while (obmen == 1);
  60. }
  61. }
  62. void main()
  63. {
  64. setlocale(LC_ALL, "rus");
  65. srand(time(NULL));
  66. int array[7][5];
  67. int s = 7;
  68. create(array, s);
  69. show(array, s);
  70. cout << "\n";
  71. row(array, s);
  72. show(array, s);
  73. }

Решение задачи: «Сортировка строк - ошибка в коде»

textual
Листинг программы
  1. void row(int mas[][5], int row)
  2. {
  3. int temp, obmen, kol = 0;
  4. for (int i = 0; i < row; i++)
  5. for (int j = 0; j < 4 ; j++)
  6. for (int k =0; k <4; k ++)
  7. if (mas[i][k + 1] < mas[i][k])
  8. {
  9. temp = mas[i][k];
  10. mas[i][k] = mas[i][k + 1];
  11. mas[i][k + 1] = temp;
  12. }
  13. }

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

В представленном коде реализована функция сортировки строки (или массива) в порядке возрастания. Список действий, которые происходят в коде:

  1. В функции объявляются три переменные: temp, obmen и kol. temp используется для временного хранения значения переменной, obmen используется для обмена значениями переменных, а kol используется для подсчета количества итераций цикла.
  2. Запускается цикл, который проходит по каждой строке (или элементу) массива.
  3. Внутри этого цикла запускается еще два вложенных цикла. Первый проходит по каждому столбцу (или элементу) строки, а второй по всем элементам, начиная со второго столбца (или элемента).
  4. Вложенный цикл проверяет, если текущий элемент больше следующего, то происходит обмен их значениями.
  5. После завершения вложенных циклов, функция завершает свою работу.

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


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

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

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

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

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

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