Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
1

Функция max

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

Author24 — интернет-сервис помощи студентам
Здравствуйте, надо написать функцию которая выводит максимальное целое число из цепочки чисел. Например МАХ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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2013, 17:51
Ответы с готовыми решениями:

Задать значения вещественным элементам массивов A(6),B(3),C(10) и вычислить Y=max(max(A),max(B),max(C)
Задать значения вещественным элементам массивов A(6),B(3),C(10) и вычислить...

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

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

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

16
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
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
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:20  [ТС] 3
Спасибо, но как я понял int n является количеством чисел в последовательности, а мне надо что бы количество чисел было любое без ее указания(
0
1458 / 795 / 257
Регистрация: 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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.04.2013, 18:24 5
Только если сделать много перегрузок функции. По-другому никак.
0
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 18:40  [ТС] 6
yuron_477, я понял но вот все равно нужна нецифра что бы остановить, а мне бы надо чтобы одни цифры

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

lazybiz, да я понимаю но препод сказал так сделать вот сижу голову ломаю(((
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
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
6 / 6 / 1
Регистрация: 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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.04.2013, 19:09 12
Только учти что эта конструкция работает только начиная со стандарта С++ 2011.

Добавлено через 32 секунды
Какой компилятор?
1
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:11  [ТС] 13
lazybiz, ааа вон чего я на VS 2010, эта функция для firebird препод сказал написать а под 2012 нет исходников сборки((( а живым да точно не пустит
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.04.2013, 19:16 14
Ну да, первая поддержка С++11 появилась только в Visual Studio 12.
1
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
22.04.2013, 19:17  [ТС] 15
А других вариантов кроме "Вектора" нет как я понимаю?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.04.2013, 19:27 16
Нашел еще такой вариант на Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int _max( size_t count, int values[] )
{
    int m = values[0];
    while ( count-- ) {
        if ( values[count] > m ) m = values[count];
    }
    return m;
}
 
#define my_max( ... ) ({                            \
    int _args[] = { __VA_ARGS__ };                  \
    _max( sizeof _args / sizeof *_args, _args );    \
})
 
 
int main()
{
    printf( "%d", my_max( 0, 5, 1, 2, 3 ) );
    return 0;
}
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.04.2013, 19:33 17
Без извращений - только вектором.
Ну и еще такая штука есть в с++11.
C++
1
std::cout << std::max({1, 2, 4}) << std::endl;
1
22.04.2013, 19:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2013, 19:33
Помогаю со студенческими работами здесь

Функция max и min
Скажите, пожалуйста, почему на трёх данных не работает функция max(min)? С двумя переменными...

Функция min и max
Реализовать алгоритм поиска в одномерном массиве максимального и минимального элемента. c++

Зачем существует функция max()?
Доброго! Поймал в чужом коде функцию max() из библиотеки algorithm, и меня начал мучить вопрос,...

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru