Удаление элементов массива - C (СИ) (69955)

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

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

Здравствуйте. Дан двумерный массив (N=4, M=5). Удалить из строк все отрицательные элементы, дополняя её справа нулями. Подскажите, пожалуйста, как сделать.

Решение задачи: «Удаление элементов массива»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define N 4
#define M 5
 
int main(void)
{
    int i, j, A[N][M], buf[M], bufIndex;
    srand(time(NULL));
    /* генерация СЧ и вывод на экран */
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            A[i][j] = -5 + rand() % 10;
            printf("%2d ", A[i][j]);
        }
        printf("\n");
    }
 
    /* замена */
    printf("\nAfter:\n");
    for (i = 0; i < N; i++)
    {
        bufIndex = 0;
        for (j = 0; j < M; j++)
            if (A[i][j] >= 0) /* копируем неотрицательные значения */
                buf[bufIndex++] = A[i][j];
        /* если было хотя бы одно отрицательное значение */
        if (bufIndex != M)
            for (j = 0; j < M; j++)
                A[i][j] = (j < bufIndex ? buf[j] : 0);/*пока j меньше bufIndex берём значения из buf*/
 
        /* выводим результат на экран */
        for (j = 0; j < M; j++)
            printf("%2d ", A[i][j]);
        printf("\n");
    }
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем размерность массива
  3. Инициализируем переменные для работы с массивом
  4. Генерируем случайные числа и выводим их на экран
  5. Производим замену элементов массива, удаляя отрицательные значения
  6. Проверяем результат замены и выводим его на экран
  7. Возвращаем 0, завершая работу программы

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

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