Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
#1

Функция max - C++

22.04.2013, 17:51. Просмотров 862. Ответов 16
Метки нет (Все метки)

Здравствуйте, надо написать функцию которая выводит максимальное целое число из цепочки чисел. Например МАХ2 (2,3,7)выдает 7.
Можно ли сделать так чтобы входным параметром в функцию было количество чисел?
Или при вводе пользователем некоторого количества чисел например 10 чисел они передавались строкой в функцию там разбирались(каждое число вводится через пробел) и находился максимум из этого?
Буду рад любой помощи.

Возможно по такому принципу?
C++
1
2
3
4
 int max (int a, int b, int c)
      {
          return max( max(a,b), c);
      }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 17:51     Функция max
Посмотрите здесь:

Функция max - C++
Здравствуйте, не могу написать функцию для поиска максимально числа. Нужно написать программу для решения: ...

Функция max и min - C++
Скажите, пожалуйста, почему на трёх данных не работает функция max(min)? С двумя переменными работает. #include <iostream> using...

Определить значение функции max(a, max(a/2, cos b))*max(2a-b,b) - C++
Составьте программу для решения задачи. Определите значение õ=max(a, max(a/2, cos b))*max(2a-b,b) , где max(x,y)есть максимальное из...

Функция которая находит max элемент массива и имеет перегруженность - C++
#include <iostream> using namespace std; int max(int a) {for (int i = 0; i <a; i++) return a;} double max(double a) {for...

Найти в матрице А max элемент, все элементы в столбце до max умножить на 2 - C++
Всем доброго вечера. Возникла проблема с задачей, прошу помочь. В матрице А найти max элемент, все элемент, расположенные в столбце до...

Не компилирует max в cin.ignore(numeric_limits<streamsize>::max(),'\n') - C++
Компилятор MSVS 2010, проблема с max, как мне это устранить? использовала define, но либо я не там ставила (и библиотеки тоже),...

Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... - C++
Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ) / ( 1+max(a+bc,b,15)) на С++.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 18:03     Функция max #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
#include <cstdarg>
 
int my_max( int n, ... ) {
    int m = 0;
    va_list l;
    if ( n > 0 ) {
        va_start( l, n );
        for ( ; n > 0; n-- ) {
            int v = va_arg( l, int );
            if ( v > m ) m = v;
        }
        va_end( l );
    }
    return m;
}
 
int main()
{
    printf( "%d\n", my_max( 3, 1,3,5 ) );
    printf( "%d\n", my_max( 5, 7,1,9,3,5 ) );
    return 0;
}
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:20  [ТС]     Функция max #3
Спасибо, но как я понял int n является количеством чисел в последовательности, а мне надо что бы количество чисел было любое без ее указания(
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.04.2013, 18:24     Функция max #4
Есть же стандартная функция (вот ее пример):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last)
{
    if (first == last) {
        return last;
    }
    ForwardIt largest = first;
    ++first;
    for (; first != last; ++first) {
        if (*largest < *first) {
            largest = first;
        }
    }
    return largest;
}
И пример пользования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::cout<<"Enter numbers (any letter to stop):";
    std::cout<<"Max elem is: "
             <<*std::max_element(std::istream_iterator<int>(std::cin), std::istream_iterator<int>())<<"\n";
    
    std::cout<<"\n";
    return 0;
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 18:24     Функция max #5
Только если сделать много перегрузок функции. По-другому никак.
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:40  [ТС]     Функция max #6
yuron_477, я понял но вот все равно нужна нецифра что бы остановить, а мне бы надо чтобы одни цифры

lazybiz, много перегрузок это для каждого существующего int n ? от 0 и до ууууууууу...? 0_0
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
22.04.2013, 18:49     Функция max #7
_Loader_, плюсы не заточены на такое использование. Если нужно безопасно передавать любое кол-во параметров, оберните их в какой-нибудь std::vector и передавайте.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 18:50     Функция max #8
_Loader_, А тебе надо чтобы функция принимала yyyyyyyyy параметров? А вообще я вижу эффективность в данном подходе только если количество параметров будет ~ не более 5.
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:55  [ТС]     Функция max #9
Tulosba, а как сделать через std::vector???

lazybiz, да я понимаю но препод сказал так сделать вот сижу голову ломаю(((
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 19:01     Функция max #10
Ха, я так и думал что это все-таки возможно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template < typename T >
inline const T& largest_of( const T& a, const T& b )
{
    return a > b ? a : b;
}
 
template < typename T, typename ...REST >
inline const T& largest_of( const T& first, const REST&... rest... )
{
    return largest_of( first, largest_of( rest... ) );
}
 
int main()
{
    std::cout << largest_of( 9, 1, 7 ) << '\n' ;
    std::cout << largest_of( 1, 9, 2, 8, 3, 7, 4, 6, 5 ) << '\n' ;
}
Но думаю что препод тебя с таким кодом живым не отпустит))
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:08  [ТС]     Функция max #11
lazybiz, у меня ошибки что то(

error C2143: синтаксическая ошибка: отсутствие "," перед "..."
error C2780: const T &largest_of(const T &,const int): требует аргументов: 2, имеется: 3
error C2780: const T &largest_of(const T &,const int): требует аргументов: 2, имеется: 9

как быть?)))
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 19:09     Функция max #12
Только учти что эта конструкция работает только начиная со стандарта С++ 2011.

Добавлено через 32 секунды
Какой компилятор?
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:11  [ТС]     Функция max #13
lazybiz, ааа вон чего я на VS 2010, эта функция для firebird препод сказал написать а под 2012 нет исходников сборки((( а живым да точно не пустит
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 19:16     Функция max #14
Ну да, первая поддержка С++11 появилась только в Visual Studio 12.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 19:17     Функция max
Еще ссылки по теме:

Определите значение õ=max(a,a+b,a- b)+max(b, 2b-a,b+2a) - C++
Составьте программу для решения задачи. Определите значение õ=max(a,a+b,a- b)+max(b, 2b-a,b+2a) ,где max(x,y)есть максимальное из чисел x,...

Найти сумму элементов между max элементом и max отрицательным элементом - C++
помогите))) найти сумму элементов между max элементом и max отрицательным элементом

В строке первого объекта класса слово MAX длины заменить на слово MAX длины второго объекта класса - C++
Доброго времени суток! Есть задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка....

max= - C++
Привет. Помогите плжалуйста разобраться с функциями. Нужно просто найти Максимальный элеммент. #include&lt;iostream.h&gt; const n=99; ...

max min - C++
Всем доброго времени суток. нужна ваша помощь ув. программеры. Дана целочисленная матрица размера 6*9. Определить функцию поиска значения и...


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

Или воспользуйтесь поиском по форуму:
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:17  [ТС]     Функция max #15
А других вариантов кроме "Вектора" нет как я понимаю?
Yandex
Объявления
22.04.2013, 19:17     Функция max
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru