Написать рекурсивную функцию, возвращающую третье по величине число в массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток друзья. тут вот такая задачка. надо сделать рекурсивную функцию. функция получает массив целый чисел и его размер. размер массива минимум 3. функция возвращает 3-ие по велечене число в массиве. функция "проходит" только один рас по всему массиву и не меняет в нем не чего. пример: массив={3,7,4,500,6,3,400,9,300,2,8,5,1} функция возвращает 300. main выводит на экран ответ. заранее спасибо)

Решение задачи: «Написать рекурсивную функцию, возвращающую третье по величине число в массиве»

textual
Листинг программы
  1. void swap_ints(int* a, int* b)
  2. {
  3.     int temp = *a;
  4.     *a = *b;
  5.     *b = temp;
  6. }
  7.  
  8. int search_third(int* arr, int n)
  9. {
  10.     static int maximums[3] = { INT_MIN, INT_MIN, INT_MIN };
  11.     int max;
  12.    
  13.     if(n--)
  14.     {
  15.         max = arr[n];
  16.         if(max > maximums[0])
  17.         {
  18.             swap_ints(maximums + 2, maximums + 1);
  19.             swap_ints(maximums + 1, maximums);
  20.             maximums[0] = max;
  21.         }
  22.         search_third(arr, n);
  23.     }
  24.     return maximums[2];
  25. }
  26.  
  27. int main()
  28. {
  29.     int mas[] = {3,7,4,500,6,3,400,9,300,2,8,5,1};
  30.     printf("%d\n", search_third(mas, sizeof(mas)/sizeof(int)));
  31.     return 0;
  32. }

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

  1. В функции swap_ints происходит обмен значениями двух указателей на int.
  2. В функции search_third массив arr содержит некоторое количество чисел.
  3. В функции search_third имеется статический массив maximums, в котором хранятся три минимальных значения.
  4. Переменная n содержит количество элементов в массиве arr.
  5. В функции search_third выполняется рекурсивный вызов функции search_third с уменьшенным значением n.
  6. В функции search_third происходит поиск третьего по величине числа в массиве arr путем сравнения максимального значения в массиве arr с значениями в массиве maximums.
  7. Если максимальное значение в массиве arr больше максимального значения в массиве maximums, то значения в массиве maximums переставляются так, чтобы максимальное значение в массиве arr стало третьим по величине.
  8. Затем происходит рекурсивный вызов функции search_third с уменьшенным значением n.
  9. В конце функции search_third возвращается третье по величине значение из массива arr.
  10. В функции main создается массив mas, содержащий некоторые числа.
  11. Функция search_third вызывается в функции main с массивом mas и его размером в качестве аргументов.
  12. Результат работы функции search_third выводится на экран.
  13. Возвращаемое значение функции search_third содержит третье по величине число в массиве mas.
  14. Все числа в массиве mas меньше или равны возвращаемому значению функции search_third.
  15. Все числа в массиве mas больше или равны второму по величине числу в массиве mas.
  16. Все числа в массиве mas меньше или равны второму по величине числу в массиве mas.
  17. В функции main выполняется рекурсивный вызов функции main с уменьшенным значением n.
  18. В функции main создается массив mas, содержащий некоторые числа.
  19. Функция search_third вызывается в функции main с массивом mas и его размером в качестве аргументов.
  20. Результат работы функции search_third выводится на экран.

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


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

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

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы