Заменить в отсортированном массиве все отрицательные элементы на нулевое значение - 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;
                }
            }
}

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

В данном коде реализуется функция сортировки одномерного массива по возрастанию. Список действий:

  1. Входные данные: массив a[][M], где N - число строк, M - число столбцов.
  2. Инициализируем переменные: raw = 0, col = 0, step = 0. Переменная raw используется для прохода по строкам, col - по столбцам, step - номер прохода.
  3. Начинаем сортировку: for (raw = 0; raw < N; ++raw) {...}. Внутренний цикл прохода по строкам.
  4. Внутренний цикл прохода по столбцам: for (step = 0; step < M - 1; ++step) {...}.
  5. Проверяем, если текущий элемент больше следующего, то меняем их местами: if (a[raw][col] > a[raw][col + 1]) {...}.
  6. Обмениваем значения: int t = a[raw][col]; a[raw][col] = a[raw][col + 1]; a[raw][col + 1] = t;.
  7. Завершаем внутренний цикл прохода по столбцам.
  8. Выходим из внешнего цикла прохода по строкам. В результате выполнения данного кода, массив a[][M] будет отсортирован по возрастанию.

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


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

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

14   голосов , оценка 3.571 из 5
Похожие ответы