Вывести результат сравнения сумм четных и нечетных чисел - 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;
}

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

  1. Программа на языке C.
  2. Задача программы - сравнение сумм четных и нечетных чисел в массиве.
  3. В начале программы объявляются две функции: compare(int n, int arr[]) и main().
  4. В функции main() происходит запрос на ввод количества чисел для массива и их значений.
  5. После ввода значений функция compare() вызывается с аргументами (n-1, arr), где n-1 - это размер массива, а arr - это сам массив.
  6. Функция compare() рекурсивная и выполняет следующие действия:
    • Если индекс меньше нуля, то возвращает 0.
    • Иначе проверяет число на четность: если число четное, то прибавляет его к результату, если нечетное - отнимает.
    • Рекурсивно вызывает функцию compare() с аргументами (n-1, arr) до тех пор, пока не будет достигнут базовый случай (индекс меньше нуля).
  7. В функции main() после вызова функции compare() происходит проверка результата и выводится соответствующее сообщение.
  8. Результат выполнения программы зависит от введенных пользователем значений.

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


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

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

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