Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
 Аватар для Folayt
2 / 3 / 7
Регистрация: 25.10.2012
Сообщений: 113

Написать функцию min с переменным числом параметров

05.02.2014, 19:23. Показов 6804. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию min с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Написать вызываю-щую функцию main, которая обращается к функции min не менее трех раз с количеством параметров 5, 10, 12.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2014, 19:23
Ответы с готовыми решениями:

Написать функцию с переменным числом параметров
Задание дали такое: Написать функцию с переменным числом параметров, в соответствии с вариантом, продемонстрировать вызов функции с...

Написать функцию с переменным числом параметров
Написать функцию с переменным числом параметров, которая считае значение полинома вида: c0 + c1*x + c2*x^2 + c3*x^3 + ... Напишите код,...

Написать функцию с переменным числом параметров
Среднее арифметическое из элементов в списке параметров , стоящие на четных местах. вот что у меня получилось, дальше никак: #include...

7
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.02.2014, 19:38
Если есть поддержка С++11, то можно сразу стандартным функционалом воспользоваться:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <algorithm>
 
int main()
{
   std::cout << "Min element: -> " << std::min({5,7,9,3,6,7,1,6}) << "\n";
   std::cout << "Min element: -> " << std::min({1.2, 4.6, 7.03, 1.009, 0.6}) << "\n";
 
   return 0;
}
Добавлено через 1 минуту
Если хочется писать самому функцию, то можно посмотреть сюда: Variadic functions
1
 Аватар для Folayt
2 / 3 / 7
Регистрация: 25.10.2012
Сообщений: 113
05.02.2014, 21:59  [ТС]
у меня есть код, только он некорректно работает, тоесть вывод то есть то нет его, либо выводит число совсем не понятно откуда взявшееся.
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 <cstdlib>
#include <cstdarg>
#include <iostream.h>
#include <conio.h>
namespace 
 {
    template<unsigned int Count, typename T>
    const T& min(const T& first, ...)
    {
    T result = first;
    T crt;
 
    va_list v1;
    va_start(v1, first);
    for(unsigned int i = 0; i < Count - 1; ++i)
    {
        crt = va_arg(v1, T);
        if(crt < result)
            result = crt;
        }
        va_end(v1);
 
        return result;
    }
}
    int main()
{
    int i5[5] = {1, 2 ,3 ,4, 5 };
    double d10[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    double f12[12]  = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
 
 
    
    int mi = min<5>(i5[0], i5[1], i5[2], i5[3], i5[4]);
    double md = min<10>(d10[0], d10[1], d10[2], d10[3], d10[4], d10[5], d10[6], d10[7], d10[8], d10[9]);
    double mf = min<12>(f12[0], f12[1], f12[2], f12[3], f12[4], f12[5], f12[6], f12[7], f12[8], f12[9], f12[10], f12[11]);
    cout<min;
    cout<<"\n";
    getch(); 
    return 0;
}
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.02.2014, 22:45
Я бы так написал:
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
#include <iostream>
#include <cstdarg>
 
template<typename T>
T min(int count, ...)
{
   va_list args;
   va_start(args, count);
 
   T smallest = va_arg(args, T);
   for (int i = 0; i < count-1; ++i)
   {
      T next = va_arg(args, T);
      if (smallest > next) smallest = next;
   }
 
   va_end(args);
   return smallest;
}
 
int main()
{
   std::cout << min<int>(10, 3, 7, 9, 6, 2, 9, 8, 3, 8, 10);
 
   return 0;
}
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
06.02.2014, 00:05
Если доступен C++11, то я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template <typename T>
inline T min(T const& arg0)
{
    return arg0;
}
template <typename T, typename ...Args>
inline T min(T const & arg0, T const & arg1, Args const &... args)
{
    return min(arg0 < arg1 ? arg0 : arg1, args...);
}
 
int main()
{
    std::cout << min(1, 2, -1, 4, -10) << std::endl;
    return 0;
}
1
 Аватар для Folayt
2 / 3 / 7
Регистрация: 25.10.2012
Сообщений: 113
06.02.2014, 09:48  [ТС]
Цитата Сообщение от DiffEreD Посмотреть сообщение
Я бы так написал:
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
#include <iostream>
#include <cstdarg>
 
template<typename T>
T min(int count, ...)
{
   va_list args;
   va_start(args, count);
 
   T smallest = va_arg(args, T);
   for (int i = 0; i < count-1; ++i)
   {
      T next = va_arg(args, T);
      if (smallest > next) smallest = next;
   }
 
   va_end(args);
   return smallest;
}
 
int main()
{
   std::cout << min<int>(10, 3, 7, 9, 6, 2, 9, 8, 3, 8, 10);
 
   return 0;
}
если мне нужно чтобы находило минимальные с 3 мя параметрами, допустимо ли такое написание
C++
1
2
std::cout << min<double>(12,11,10, 3, 7, 9, 6, 2, 9, 8, 3, 8, 10, 11, 12);
std::cout << min<>(10.1, 3.1, 7, 9.1, 6.1, 2, 9.1, 8, 3, 8, 10);
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.02.2014, 11:52
Folayt, с разными типами не просто сделать. За основу я бы взял код DrOffset, а дальше надо думать. Проблема состоит в том что надо будет определять возвращаемый тип в зависимости от условия сравнения. Пока идей нет.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.02.2014, 12:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <type_traits>
 
template<typename T>
T min(const T& arg)
{
   return arg;
}
 
template<typename T, typename T2, typename... Args>
typename std::common_type<T, T2, Args...>::type min(const T& f, const T2& s, const Args&... args)
{
   return min(f < s ? f : s, args...);
}
 
int main()
{
   std::cout << min(10.1, 3.1, 7, 9.1, 6.1, 2, 9.1, 8, 3, 8, 10) << std::endl;
   std::cout << min(2, 5.0, 10.1, 0.1, 8, 12) << std::endl;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2014, 12:00
Помогаю со студенческими работами здесь

Написать функцию с переменным числом параметров, найти сумму чисел по заданной формуле
помогите решить указанную задачу, используя функции с переменным числом параметров. 1. Написать функцию sum с переменным числом...

Написать функцию с переменным числом параметров, находящую минимальное из чисел типа int
Помогите и объясните: Написать функцию fmin с переменным числом параметров, которая находит минимальное из чисел типа int. Должно быть не...

Функция min с переменным числом параметров
Напишите функцию min с переменным числом параметров, которая находит минимальное среди чисел типа int или среди чисел типа double, тип...

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int. Написать вызывающую функцию main, которая...

Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа float
Прошу помочь в следующем. Есть задание: Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru