Заменить все нулевые элементы на минимальный - C (СИ)
Формулировка задачи:
Ввести в память машины массив размером N.
Заменить все нулевые элементы на минимальный.
Замену произвести через макрофункцию.
Решение задачи: «Заменить все нулевые элементы на минимальный»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define A(b) m[(b)-1]
#define ZAM(a,x,s) for(int i=0; i<(s); ++i)\
{ if(0==a(i))a(i)=(x);}
int main ( void )
{
int m[N]={7, 0, 3, 60, 0, 0, 9, 45, 0, 1};
int i, min;
if(N>0)min=A(1);
for(i=1; i<=N; ++i)
{
if(min>A(i)&& A(i)!=0)min=A(i);
}
ZAM(A, min,N);
for(i=1; i<=N; ++i)printf("%d ", A(i));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и математическими операциями.
- Определение размера массива N.
- Массив представлен как одномерный, значения элементов можно получить через A(b), где b — номер элемента.
- Установка значений для переменных: — m — массив из 10 элементов; — i — счётчик для цикла; — min — переменная для хранения минимального значения.
- Если массив не пустой, то min присваивается первому элементу массива.
- Цикл от 1 до N для прохода по всем элементам массива.
- Если текущий элемент меньше или равен min и не равен 0, то min обновляется значением текущего элемента.
- Цикл для замены нулевых элементов на минимальный.
- Вывод элементов массива через дефис.
- Конец программы.