Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 8

Рекурсия: найти отношение максимального и минимального из последовательности введенных ненулевых чисел

09.10.2010, 22:08. Показов 2091. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста составить программу, с помощью рекурсии:

Определить значение отношения максимального и минимального из последовательности введенных ненулевых чисел (условие завершения ввода чисел выбрать самостоятельно).

(Буду очень признателен, заранее спасибо.)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2010, 22:08
Ответы с готовыми решениями:

Найти сумму максимального и минимального чисел последовательности
Дана последовательность натуральных чисел {Aj} произвольной длины. Найти сумму максимального и минимального чисел

Массивы---Найти сумму максимального и минимального чисел последовательности ПОМОГИТЕ ПЛЗ
Дана последовательность целых чисел {Aj} произвольной длины. Найти произведение положительных чисел, не превосходящих 20 по абсолютной...

Поиск минимального, среднее и максимального чисел из трех введенных
Помогите плиз, у пользователя запрашивают 3 числа и программа ищет среди них минимальное, среднее и максимальное. С++

5
11 / 11 / 2
Регистрация: 09.10.2010
Сообщений: 23
10.10.2010, 00:58
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
 
using namespace std;
 
template< typename Type, 
          template <typename, typename> class Container >
Type find_max( typename Container<Type, allocator<Type> >::iterator beg, 
               typename Container<Type, allocator<Type> >::iterator end )
{
  Type i1 = *beg++;
  if (beg == end) return i1;
  Type i2 = find_max< Type, Container >(beg, end);
  return i1 > i2 ? i1 : i2;
}
 
 
template< typename Type, 
          template <typename, typename> class Container >
Type find_min( typename Container<Type, allocator<Type> >::iterator beg, 
               typename Container<Type, allocator<Type> >::iterator end )
{
  Type i1 = *beg++;
  if (beg == end) return i1;
  Type i2 = find_min< Type, Container >(beg, end);
  return i1 < i2 ? i1 : i2;
}
 
 
int main()
{
  vector<double> a;
  double i;
  while (cin >> i && i!=0) a.push_back(i);
  cout << find_max< double, vector >(a.begin(), a.end()) /
          find_min< double, vector >(a.begin(), a.end()) 
       << endl;
 
  return 0;
}
Хотя, искать min/max рекурсией - это, конечно, извращение
1
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 8
10.10.2010, 01:35  [ТС]
Знаю)) Просто препод потребовал сделать так лабораторку))) Пасиб тебе =)
0
11 / 11 / 2
Регистрация: 09.10.2010
Сообщений: 23
10.10.2010, 01:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <vector>
 
using namespace std;
 
template< typename Type >
Type min(Type i1, Type i2)
{
  return i1 < i2 ? i1 : i2;
}
 
template< typename Type >
Type max(Type i1, Type i2)
{
  return i1 > i2 ? i1 : i2;
}
 
template< typename Type, 
          template <typename, typename> class Container >
Type find_minmax( typename Container<Type, allocator<Type> >::iterator beg, 
                  typename Container<Type, allocator<Type> >::iterator end,
                  Type (*f)(Type, Type) )
{
  Type i1 = *beg++;
  if (beg == end) return i1;
  Type i2 = find_minmax< Type, Container >(beg, end, f );
  return f(i1,i2);
}
 
int main()
{
  vector<double> a;
  double i;
  while (cin >> i && i!=0) a.push_back(i);
 
  cout << find_minmax< double, vector >(a.begin(), a.end(), max<double>)/
          find_minmax< double, vector >(a.begin(), a.end(), min<double>)
       << endl;
 
  return 0;
}
Так еще круче
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.10.2010, 17:12
не факт, что точно по заданию, но сделал рекурсивным почти всё...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void fill_array(int * arr, size_t size, int limit){
    if ( ! size )
        return;
    *arr = rand() % limit + 1;
    fill_array(++arr, --size, limit);
}
 
int * max_element(int * arr, size_t size){
    return ( ! size ) ? NULL : ( size == 1 ) ? arr : ( *arr > *(arr + size - 1) ) ? max_element(arr, --size) :
        max_element(++arr, --size);
}
 
int * min_element(int * arr, size_t size){
    return ( ! size ) ? NULL : ( size == 1 ) ? arr : ( *arr < *(arr + size - 1) ) ? min_element(arr, --size) :
        min_element(++arr, --size);
}
 
double max_min_relation(int * arr, size_t size){
    return (double)*max_element(arr, size) / (double)*min_element(arr, size);
}
 
void print_array(const int * arr, size_t size){
    if ( ! size )
        return;
    printf("%d%c", *arr, ( size > 1 ) ? ' ' : '\n');
    print_array(++arr, --size);
}
 
#define SIZE 5
 
int main(void){
    int arr[SIZE];
 
    srand(time(NULL));
 
    fill_array(arr, SIZE, 10);
    printf("Array:\n");
    print_array(arr, SIZE);
    printf("Relation between max and min elements: %.1f\n", max_min_relation(arr, SIZE));
 
    exit(0);
}
1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
11.10.2010, 13:43
Как-то все сложно у вас получилось. И зачем использовать векторы/массивы, если у нас есть рекурсия?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <limits>
 
double ratio(double min, double max)
{
    double number;
    std::cout << "> ";
    if(std::cin >> number)
    {
        if(number == 0)
        {
            std::cout << "Нуль проигнорирован" << std::endl;
            return ratio(min, max);
        }
        if(min > number)
            min = number;
        if(max < number)
            max = number;
        return ratio(min, max);
    }
    std::cout << std::endl;
    return max / min;
}
 
int main()
{
    std::cout << "Введите последоваетельность чисел (Ctrl+D или Ctrl+Z для"
        << " завершения ввода): " << std::endl;
    double result = ratio(std::numeric_limits<double>::max(),
                        std::numeric_limits<double>::min());
    std::cout << "Отношение максимального и минимального числа равно " << result
        << std::endl;
        
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2010, 13:43
Помогаю со студенческими работами здесь

Поиск суммы минимального и максимального из трех введенных чисел
Составить программу поиска суммы минимального и максимального из трех введенных чисел.

Найти среднее арифметическое минимального и максимального элементов из 10 введенных
1. Даны величины углов треугольника. Определить является ли это треугольник: а) остроугольным б) тупоугольным 2. Найти среднее...

Найти среднее арифметическое минимального и максимального элементов из 10 введенных
1. Найти среднее арифметическое минимального и максимального элементов из 10 введенных. Нужно очень срочно! Помогите пожалуйста.! ...

Найти номер максимального и номер минимального из чисел последовательности
Даны натуральное число n и целые числа а1, a2, ..., аn. Найти номер максимального и номер минимального из чисел аi. Если таких чисел...

Напишите программу, которая в последовательности целых чисел определяет разность максимального и минимального чисел
Напишите программу, которая в последовательности целых чисел определяет разность максимального и минимального чисел. Программа получает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru