Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.04.2013, 17:51. Просмотров 1067. Ответов 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);
      }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 17:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция max (C++):

Даны действительные числа A, B, C. Получить max(a,a+b)+max(a,b+c,a+b) \ 1+max(ab,bc)+max(a+bc,15,ac) - C++
Всем привет)Помогите пожалуйста написать в С++ Даны действительные числа A, B, C. Получить max(a,a+b)+max(a,b+c,a+b) \...

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

Задача для курсовой: определить значение z=max(a, 2b)*max(2a-b,b), где max(x, y)-максимальные из чисел х и у - C++
Определить значение z=max(a, 2b)*max(2a-b,b), где max(x, y)-максимальные из чисел х и у. Задачу решить 2мя способами: 1) Не используя...

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

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

Определить значение функции 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)есть максимальное из...

16
castaway
Эксперт С++
4924 / 3032 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 18:03 #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;
}
1
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:20  [ТС] #3
Спасибо, но как я понял int n является количеством чисел в последовательности, а мне надо что бы количество чисел было любое без ее указания(
0
DiffEreD
1439 / 776 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.04.2013, 18:24 #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;
}
1
castaway
Эксперт С++
4924 / 3032 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 18:24 #5
Только если сделать много перегрузок функции. По-другому никак.
0
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:40  [ТС] #6
yuron_477, я понял но вот все равно нужна нецифра что бы остановить, а мне бы надо чтобы одни цифры

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

lazybiz, да я понимаю но препод сказал так сделать вот сижу голову ломаю(((
0
castaway
Эксперт С++
4924 / 3032 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
22.04.2013, 19:01 #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' ;
}
Но думаю что препод тебя с таким кодом живым не отпустит))
1
_Loader_
6 / 6 / 0
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:08  [ТС] #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

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

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

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

Найти min(max(x, y), max(x, z), max(z, d) - C++
Даны различные действительные числа x, y, z, d. Найти min(max(x, y), max(x, z), max(z, d)).

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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