Сортировка строк - ошибка в коде - 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; } }
Объяснение кода листинга программы
В представленном коде реализована функция сортировки строки (или массива) в порядке возрастания. Список действий, которые происходят в коде:
- В функции объявляются три переменные:
temp
,obmen
иkol
.temp
используется для временного хранения значения переменной,obmen
используется для обмена значениями переменных, аkol
используется для подсчета количества итераций цикла. - Запускается цикл, который проходит по каждой строке (или элементу) массива.
- Внутри этого цикла запускается еще два вложенных цикла. Первый проходит по каждому столбцу (или элементу) строки, а второй по всем элементам, начиная со второго столбца (или элемента).
- Вложенный цикл проверяет, если текущий элемент больше следующего, то происходит обмен их значениями.
- После завершения вложенных циклов, функция завершает свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д