Удаление элементов массива - 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;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем размерность массива
- Инициализируем переменные для работы с массивом
- Генерируем случайные числа и выводим их на экран
- Производим замену элементов массива, удаляя отрицательные значения
- Проверяем результат замены и выводим его на экран
- Возвращаем 0, завершая работу программы