Найти минимальный элемент массива среди положительных элементов, расположенных левее первого нуля - C (СИ)
Формулировка задачи:
Дан целочисленный вектор A(n). Найти минимальный элемент среди положительных элементов, расположенных левее первого элемента, равного нулю.
Решение задачи: «Найти минимальный элемент массива среди положительных элементов, расположенных левее первого нуля»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main()
{
int n;
scanf("%d", &n);
int *a = (int *)malloc(n*sizeof(int));
int i;
int min = INT_MAX;
int d = n;
for(i = 0; i < n; i++) {
scanf("%d", &a[i]);
if(a[i] == 0 && d == n) {d = i;}
}
for(i = 0; i < d;i++)
if(a[i] < min) min = a[i];
printf("%d",min);
}
Объяснение кода листинга программы
В этом коде:
- Считываем количество элементов массива, для которых нужно найти минимальный элемент.
- Выделяем память под массив с помощью функции
malloc(). - Считываем значения элементов массива и сохраняем их в переменной
a. - Находим индекс первого нулевого элемента. Если такой элемент найден, то с помощью переменной
dсохраняем его индекс. Если же нулевых элементов нет, тоdостается равнымn, что означает, что в массиве нет нулевых элементов. - Находим минимальный элемент среди положительных элементов, расположенных левее первого нуля. Для этого используем второй цикл
for, который проходит по всем элементам массива, начиная с первого и доd. Если текущий элемент меньшеmin, то обновляем значениеmin. - Выводим на экран минимальный элемент. Таким образом, данный код выполняет следующие шаги:
- Считывает количество элементов массива.
- Выделяет память под массив.
- Считывает значения элементов массива.
- Находит индекс первого нулевого элемента или устанавливает, что нулевых элементов нет.
- Находит минимальный элемент среди положительных элементов, расположенных левее первого нуля.
- Выводит на экран минимальный элемент.