Дан массив целых чисел. Найти номер первого нечетного элемента - 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;
}

Объяснение кода листинга программы

В данном коде представлен алгоритм поиска первого нечетного элемента в массиве целых чисел. Алгоритм использует рекурсию и базовый случай для остановки рекурсии.

  1. Сначала, в функции first_odd_index, мы проверяем базовый случай, когда массив пуст. Если массив пуст, то возвращаем INT_MIN.
  2. Затем, мы проверяем первый элемент массива на нечетность. Если элемент нечетный, то возвращаем 0, так как первый нечетный элемент найден.
  3. В противном случае, мы рекурсивно вызываем функцию first_odd_index для следующего элемента массива.
  4. Если рекурсивный вызов возвращает 0, то это означает, что следующий элемент массива был нечетным. В этом случае, возвращаем 1 + индекс следующего элемента.
  5. Если рекурсивный вызов возвращает 1, то это означает, что следующий элемент массива был четным. В этом случае, продолжаем рекурсивный поиск.
  6. В функции main, мы создаем несколько тестовых массивов.
  7. Затем, мы вызываем функцию first_odd_index для каждого массива и выводим результат. Список не более 20 элементов:
  8. Массив a: [2, 3, 4]
    • first_odd_index(a, 3): Возвращает 0, так как первый элемент массива нечетный.
  9. Массив b: [1, 2, 3, 4]
    • first_odd_index(b, 4): Возвращает 1, так как первый элемент массива нечетный.
  10. Массив c: [2, 2, 2, 2]
    • first_odd_index(c, 4): Возвращает 2, так как второй элемент массива нечетный.
  11. Массив d: [4, 0, 4, 0, 1]
    • first_odd_index(d, 5): Возвращает 4, так как четвертый элемент массива нечетный.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы