Найти минимальный четный элемент массива используя указатели - C (СИ)
Формулировка задачи:
Ребята, помогите. Тоько начинаю програмировать и никак не могу разобраться. Нужно найти минимальный четный елемент массива.
Решение задачи: «Найти минимальный четный элемент массива используя указатели»
textual
Листинг программы
#include <stdio.h>
int* FindMinEven(const int* const a, const size_t N)
{
const int* min = NULL;
const int* iterator = a;
while (iterator < a + N)
{
if (((*iterator) % 2) == 0)
{
if ((min == NULL) || (*min > *iterator))
{
min = iterator;
}
}
iterator++;
}
return (int*) min;
}
int main(void)
{
int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int b[] = {1, 3, 5, 7, 9};
int* min1 = FindMinEven(a, sizeof(a) / sizeof(*a));
int* min2 = FindMinEven(b, sizeof(b) / sizeof(*b));
printf("Array 'a':\n");
if (min1 == NULL)
{
printf("Only odd elements are present.\n");
}
else
{
printf("Found : %d\n", *min1);
}
printf("Array 'b':\n");
if (min2 == NULL)
{
printf("Only odd elements are present.\n");
}
else
{
printf("Found : %d\n", *min2);
}
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Функция FindMinEven принимает два аргумента: указатель на начало массива и размер массива
- Объявляем переменные min и iterator для хранения указателей
- Используем цикл while для перебора элементов массива, начиная с первого элемента и до элемента, адрес которого на 1 больше адреса последнего элемента массива
- Внутри цикла проверяем, является ли текущий элемент четным числом, используя оператор % для определения остатка от деления на 2
- Если текущий элемент четный, то проверяем, является ли он минимальным четным элементом, сравнивая его с предыдущим минимальным четным элементом (который изначально равен NULL) или с текущим минимальным четным элементом, если он уже был найден
- Если текущий элемент является минимальным четным элементом, то обновляем значение переменной min на текущий элемент
- После завершения цикла, возвращаем указатель на минимальный четной элемент
- В функции main создаем два массива: a и b, и инициализируем их значениями
- Используем функцию FindMinEven для поиска минимального четного элемента в массивах a и b
- Выводим сообщение в зависимости от результата: если в массиве нет четных элементов, выводим сообщение
Only odd elements are present, иначе выводим найденный минимальный четный элемент - Возвращаем 0, чтобы указать, что программа успешно завершилась