Заменить в отсортированном массиве все отрицательные элементы на нулевое значение - C (СИ)
Формулировка задачи:
Всем доброго времени суток!
Есть задача: Разработать программу, которая запоминает в двумерном массиве, имеющем 6 строк и 5 столбцов, числа от –5 до 10, получаемые случайным образом, а затем располагает их в порядке возрастания в строке. Заменить в отсортированном массиве все отрицательные элементы на нулевое значение. Найти суммы исходного и обработанного массивов. Я не могу понять как сделать в моей программе сортировку по строкам по возрастанию! Пожалуйста, помогите закончить мою программу((((
#include <stdio.h> #include <time.h> #include <stdlib.h> void Ran(int a[][5]); void Output(int a[][5]); void sortirovka(int b[][5]); int main(void) { int a[6][5]; printf("Случайный массив:\n"); Ran(a); Output(a); printf("Массив после первой сортировки:\n"); Ran(a); sortirovka(a); } void Ran(int a[][5]) { srand(time(NULL)); int i,k; for (i=0;i<5;i++) for (k=0;k<5;k++) a[k][i]=rand()%16-5; } void Output(int a[][5]) { int i,k,S1=0; for (i=0;i<5;i++) { for (k=0;k<5;k++) { if (a[k][i]<=10) printf("%2d ",a[k][i]); } printf("\n"); } for (i=0;i<5;i++) for (k=0;k<5;k++) S1+=a[i][k]; printf("Сумма исходного массива - %d\n",S1); }
Решение задачи: «Заменить в отсортированном массиве все отрицательные элементы на нулевое значение»
textual
Листинг программы
void sort_1(int a[][M]) { // N - число строк // M - число столбцов int raw = 0, col = 0, step = 0; for (raw = 0; raw < N; ++raw) // строки // сортируем одномерный массви - строку // номер прохода for (step = 0; step < M - 1; ++step) //внутренний цикл прохода for (col = 0; col < M - 1 - step; ++col) { if (a[raw][col] > a[raw][col + 1]) { int t = a[raw][col]; a[raw][col] = a[raw][col + 1]; a[raw][col + 1] = t; } } }
Объяснение кода листинга программы
В данном коде реализуется функция сортировки одномерного массива по возрастанию. Список действий:
- Входные данные: массив a[][M], где N - число строк, M - число столбцов.
- Инициализируем переменные: raw = 0, col = 0, step = 0. Переменная raw используется для прохода по строкам, col - по столбцам, step - номер прохода.
- Начинаем сортировку: for (raw = 0; raw < N; ++raw) {...}. Внутренний цикл прохода по строкам.
- Внутренний цикл прохода по столбцам: for (step = 0; step < M - 1; ++step) {...}.
- Проверяем, если текущий элемент больше следующего, то меняем их местами: if (a[raw][col] > a[raw][col + 1]) {...}.
- Обмениваем значения: int t = a[raw][col]; a[raw][col] = a[raw][col + 1]; a[raw][col + 1] = t;.
- Завершаем внутренний цикл прохода по столбцам.
- Выходим из внешнего цикла прохода по строкам. В результате выполнения данного кода, массив a[][M] будет отсортирован по возрастанию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д