Дан массив целых чисел. Найти номер первого нечетного элемента - C (СИ)
Формулировка задачи:
Дан массив целых чисел. Найти номер первого нечетного элемента. Помогите
Решение задачи: «Дан массив целых чисел. Найти номер первого нечетного элемента»
textual
Листинг программы
#include <stdio.h> #include <limits.h> int first_odd_index(const int * array, const size_t count) { return ( count == 0 ) ? INT_MIN : ( *array & 1 ) ? 0 : 1 + first_odd_index(array + 1, count - 1); } #define elements_count(arr) ( sizeof(arr) / sizeof(*arr) ) int main(void) { int a[] = { 2, 3, 4 }; int b[] = { 1, 2, 3, 4 }; int c[] = { 2, 2, 2, 2 }; int d[] = { 4, 0, 4, 0, 1 }; printf("A: %d\n", first_odd_index(a, elements_count(a))); printf("B: %d\n", first_odd_index(b, elements_count(b))); printf("C: %d\n", first_odd_index(c, elements_count(c))); printf("D: %d\n", first_odd_index(d, elements_count(d))); return 0; }
Объяснение кода листинга программы
В данном коде представлен алгоритм поиска первого нечетного элемента в массиве целых чисел. Алгоритм использует рекурсию и базовый случай для остановки рекурсии.
- Сначала, в функции first_odd_index, мы проверяем базовый случай, когда массив пуст. Если массив пуст, то возвращаем INT_MIN.
- Затем, мы проверяем первый элемент массива на нечетность. Если элемент нечетный, то возвращаем 0, так как первый нечетный элемент найден.
- В противном случае, мы рекурсивно вызываем функцию first_odd_index для следующего элемента массива.
- Если рекурсивный вызов возвращает 0, то это означает, что следующий элемент массива был нечетным. В этом случае, возвращаем 1 + индекс следующего элемента.
- Если рекурсивный вызов возвращает 1, то это означает, что следующий элемент массива был четным. В этом случае, продолжаем рекурсивный поиск.
- В функции main, мы создаем несколько тестовых массивов.
- Затем, мы вызываем функцию first_odd_index для каждого массива и выводим результат. Список не более 20 элементов:
- Массив a: [2, 3, 4]
- first_odd_index(a, 3): Возвращает 0, так как первый элемент массива нечетный.
- Массив b: [1, 2, 3, 4]
- first_odd_index(b, 4): Возвращает 1, так как первый элемент массива нечетный.
- Массив c: [2, 2, 2, 2]
- first_odd_index(c, 4): Возвращает 2, так как второй элемент массива нечетный.
- Массив d: [4, 0, 4, 0, 1]
- first_odd_index(d, 5): Возвращает 4, так как четвертый элемент массива нечетный.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д