Вывести результат сравнения сумм четных и нечетных чисел - C (СИ)
Формулировка задачи:
Написать и отладить программу, выполняющую задание. Подпрограмма должна быть рекурсивной. Запрещается работа с глобальными переменными. Используя рекурсивную функцию, составить программу определения величины, указанной в условии задачи. Во всех задачах данные содержатся в одномерных массивах, содержащих N чисел.
Задание: результат сравнения сумм четных и нечетных чисел.
Прошу помочь с данной задачей, с объяснением если не затруднит, буду бесконечно благодарен!
Решение задачи: «Вывести результат сравнения сумм четных и нечетных чисел»
textual
Листинг программы
#include <stdio.h> int compare(int n, int arr[]) { if (n < 0) /* если индекс меньше нуля заканчиваем */ return 0; else if ((arr[n] % 2)==0) /* если число чётное значит прибавляем */ return compare(n-1, arr) + arr[n]; else /* иначе отнимаем */ return compare(n-1, arr) - arr[n]; } int main(void) { int n, i, result; int arr[100] = {0}; printf("how many numbers? : "); scanf("%i", &n); /* величина массива (N) */ puts("\nenter values"); for (i=0; i<n; i++) { printf("%i = ", i+1); scanf("%i%*c", &arr[i]); } /* заполнение массива */ result = compare (n-1, arr); /* вызов рекурсивной ф-ции */ /* проверки на результат */ if (result == 0) printf("the sums are equal\n"); else if (result > 0) printf("the sum of even is greater\n"); else printf("the sum of odd is greater\n"); return 0; }
Объяснение кода листинга программы
- Программа на языке C.
- Задача программы - сравнение сумм четных и нечетных чисел в массиве.
- В начале программы объявляются две функции: compare(int n, int arr[]) и main().
- В функции main() происходит запрос на ввод количества чисел для массива и их значений.
- После ввода значений функция compare() вызывается с аргументами (n-1, arr), где n-1 - это размер массива, а arr - это сам массив.
- Функция compare() рекурсивная и выполняет следующие действия:
- Если индекс меньше нуля, то возвращает 0.
- Иначе проверяет число на четность: если число четное, то прибавляет его к результату, если нечетное - отнимает.
- Рекурсивно вызывает функцию compare() с аргументами (n-1, arr) до тех пор, пока не будет достигнут базовый случай (индекс меньше нуля).
- В функции main() после вызова функции compare() происходит проверка результата и выводится соответствующее сообщение.
- Результат выполнения программы зависит от введенных пользователем значений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д