Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Надо подправить программу С++.

Елизавета Данилова Профи (521), закрыт 11 лет назад
Вы вводите 5 чисел, программа определяет максимальный и минимальный элементы и выдает их отношение. Программа написана правильно. Именно рекурсивная функция надо, нельзя использовать никаких массивов и всего в этом роде... лишь сравнение чисел как в программе.
Одно НО: надо же добавить что-то на случай если пользователь введет больше 5 чисел. в программе оно просто не берет во внимание остальные числа, кроме 5 первых. Надо вставить строчку что б в случае ввода больше 5 чисел, выводило на экран что-то типа-Ошибка, введите 5 чисел.
Пробовала много способов, но что-то никак))) помогите, кто может)
#include <iostream.h>
#include <conio.h>

float maximum (int x, int y, int z,int u, int i)
{float max=x;
if (y>max)
max=y;
if (z>max)
max=z;
if (u>max)
max=u;
if (i>max)
max=i;
return max;
}

float minimum(int x, int y, int z, int u, int i)
{float min=x;
if (y<min)> >a> >b> >c> >d> >e;
cout < < "\nMaximum= " <
Дополнен 11 лет назад
Дополнен 11 лет назад
Добавлена ссылочка на программу)
Лучший ответ
ra Высший разум (113275) 11 лет назад
Рекурсивная версия:

#include <iostream.h>
#include <limits.h>

void recmaxmin(int &mx, int &mn, int n = 5) {
    int v;
    if (n == 5) {
        cin >> v;
        mx = mn = v;
        recmaxmin(mx, mn, n - 1);
    } else if (n > 0) {
        cin >> v;
        if (v > mx) mx = v;
        if (v < mn) mn = v;
        recmaxmin(mx, mn, n - 1);
    }
}

int main() {
    cout << "numbers? ";
    int mx, mn;
    recmaxmin(mx, mn);
    cout << "max: " << mx << "; min: " << mn << endl;
    cout << "max/min: " << (double)mx / mn << endl;
    return 0;
}

> Одно НО: надо же добавить что-то на случай если пользователь введет больше 5 чисел
Не надо. Пусть вводит сколько хочет. Возьмет-то все равно первые пять.
ЗлоПросветленный (39161) 11 лет назад
месье знает толк в извращениях.
я не догадался, куда сюда рекурсию прикрутить =)
Елизавета Данилова Профи (521) теперь буду разбираться что да как)) все таки защищать свою лабораторную прийдется=))
Елизавета ДаниловаПрофи (521) 11 лет назад
спасибо)))
Остальные ответы
Зло Просветленный (39161) 11 лет назад
выкладывай код на pastebin.com
молодец, оперативненько
1. нет рекурсии в твоей программе
2. при данном типе ввода - никак. потому что шестое ( и прочие) числа и не вводятся.
т. е. даже если ты нажмешь еще пару кнопок - программа не проигнорирует, а не узнает.
и это, в принципе, правильно.
ловить такую ситуацию - усложнять себе жизнь. например, считывая строку с числами через пробелы
3. а еще i в main лишняя
Елизавета ДаниловаПрофи (521) 11 лет назад
ой про i -точно))то я забыла удалить,пыталась как то циклами все сделать))это был аргумент для счетчика)
Зло Просветленный (39161) бывает. с вводом все просто - работает до переноса строки. получаем: ждем а, b, c, d, e и выполняем программу дальше. все, что будет передано в поток осядет в стеке консоли. возможно, их выловит следующий cin - но не более того
Елизавета ДаниловаПрофи (521) 11 лет назад
От провал, черт его пойми, что с той рекурсией делать( написала программу с массивом - все что надо там было - так нет же, надо простое сравнивание(((
Зло Просветленный (39161) а точно нужна рекурсия?
bbFOX Знаток (451) 11 лет назад
Почему бы не сделать считывание в цикле?
Похожие вопросы