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

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

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

Здравствуйте! Прошу помощи в решении задачи. Нужно создать функцию для заполнения массива в диапазоне, указанном пользователем, функцию для вывода массива на экран и функцию сортировки каждой строки массива. Вот код , который у меня получился. Компилируется, но большинстве случаев возникает ошибка при выполнении функции сортировки строк (иногда работает).
#include <iostream>
#include <time.h>
using namespace std;

//Заполнение двумерного массива случайными числами в диапазоне, указанном пользаователем
void create(int mas[][5], int row)
{
    int min, max, temp;
 
    cout << "Нижняя граница диапазона:";
    cin >> min;
    cout << "Верхняя граница диапазона:";
    cin >> max;
    if (max < min)
    {
        temp = max;
        max = min;
        min = temp;
    }
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < 5; j++)
        {
            mas[i][j] = min + rand() % (max - min + 1);
        }
    }
}
 
//вывод на экран
void show(int mas[][5], int row)
{
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < 5; j++)
        {
            cout << "[" << i << "][" << j << "]=\t" << mas[i][j] << "\t";
        }
        cout << "\n";
    }
}
 
//Сортировка каждой строки
void row(int mas[][5], int row)
{
    int temp, obmen, kol = 0;
    for (size_t i = 0; i < row - 1; i++)
    {
        do
        {
            obmen = 0;
            for (size_t j = 0; j < 5 - 1 - kol; j++)
            {
                if (mas[i][j + 1] < mas[i][j])
                {
                    temp = mas[i][j];
                    mas[i][j] = mas[i][j + 1];
                    mas[i][j + 1] = temp;
                    obmen = 1;
                }
            }
            kol++;
        } while (obmen == 1);
    }
}
 
void main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
 
    int array[7][5];
    int s = 7;
    create(array, s);
    show(array, s);
    cout << "\n";
    row(array, s);
    show(array, s);
}

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

textual
Листинг программы
void row(int mas[][5], int row)
{
int temp, obmen, kol = 0;
for (int i = 0; i < row; i++)
for (int j = 0; j < 4 ; j++)
for (int k =0; k <4; k ++)
if (mas[i][k + 1] < mas[i][k])
{
temp = mas[i][k];
mas[i][k] = mas[i][k + 1];
mas[i][k + 1] = temp;
}
}

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

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

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

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


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

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

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