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

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

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Составить функцию, принимающую переменное количество параметров - C++

14.07.2014, 17:31. Просмотров 472. Ответов 9
Метки нет (Все метки)

Напишите и протестируйте шаблонную функцию с переменным числом аргументов sum_values(), которая принимает список произвольной длины с аргументами, имеющими числовые значения (смешанных типов), и возвращает сумму в виде значения long double.

Помогите пожалуйста составить функцию или приведите пример шаблонной функции с переменными аргументами и образец ее вызова. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2014, 17:31     Составить функцию, принимающую переменное количество параметров
Посмотрите здесь:

Функцию, принимающую в качестве параметра количество строк и столбцов в таблице умножения - C++
Пожалуйста помогите, завтра экзамен!!! Написать функцию, принимающую в качестве параметра количество строк и столбцов в таблице...

Переменное число параметров шаблона - C++
Здоровеньки булы. Не уверен, что название темы точно отражает суть вопроса. Есть заготовка шаблонного делегата, параметры которого -...

Переменное число параметров функции - трабл с int - C++
Функция - выводит среднее арифметическое своих аргументов. Рабочий пример с double: #include <cstdarg> #include <iostream> double...

Запилить функцию-аллюзию на функцию switch(), принимающую буквенные значения - C++
Фрагмент кода: ... int fu; cout << "Сделать что-то? (1=да, 2=нет) "; //здесь предполагается введение не цифры, а буквы Y или N cin...

Указатели - разобрать функцию, принимающую параметр - C++
Есть функция: void handling(char **_names, bool *voarr, int pos){ char **names=new char*; for(int j=0; j<N; ++j){ ...

Реализовать функцию без параметров, определяющую количество символов, отличных от пробела - C++
Задача: Описать функцию next() без параметров, которая считывает с клавиатуры первый символ, отличный от пробела, и объявляет его своим...

Переменное количество аргументов в функции ( зацикливание ) - C++
Здравствуйте. Подскажите пожалуйста как правильно огранизировать доступ к каждому параметру. Заранее спасибо. Вот код: #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Riddleman
1 / 1 / 4
Регистрация: 03.03.2013
Сообщений: 49
14.07.2014, 17:34     Составить функцию, принимающую переменное количество параметров #2
Ну, самый простой вариант как по мне - это в функцию передавать указаель на массив и длину массива.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.07.2014, 17:36     Составить функцию, принимающую переменное количество параметров #3
C++
1
2
3
4
5
template<typename T>
T sum_values(std::initializer_list<T> values)
{
    return std::accumulate(values.begin(), values.end(), T{});
}
Пример вызова:
C++
1
sum_values({3.0l,6.0l,8.4l,1.6l})
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
14.07.2014, 17:42     Составить функцию, принимающую переменное количество параметров #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
template <class T>
long double sum_values(const T& item)
{
    return item;
}
 
 
template <class T, class... Args>
long double sum_values(const T& item, const Args&... args)
{
    return item + sum_values(args...);
}
 
 
int main()
{
    std::cout << sum_values(1, 2.0f, 3.0) << std::endl;
    return 0;
}
Добавлено через 28 секунд
Vourhey, насколько я вижу из условия, ему нужно, чтобы аргументы были разных типов.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.07.2014, 17:44     Составить функцию, принимающую переменное количество параметров #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Vourhey, насколько я вижу из условия, ему нужно, чтобы аргументы были разных типов
Не обратил внимания.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
14.07.2014, 18:31  [ТС]     Составить функцию, принимающую переменное количество параметров #6
1>------ Построение начато: проект: project1, Конфигурация: Debug Win32 ------
1> main.cpp
1>d:\dropbox\c++\c++\project1\project1\main.cpp(9): error C2332: class: отсутствует имя тега
1>d:\dropbox\c++\c++\project1\project1\main.cpp(9): error C2993: : недопустимый тип для параметра шаблона "<unnamed-tag>", не являющегося типом
1>d:\dropbox\c++\c++\project1\project1\main.cpp(9): error C2143: синтаксическая ошибка: отсутствие "," перед "..."
1>d:\dropbox\c++\c++\project1\project1\main.cpp(10): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>d:\dropbox\c++\c++\project1\project1\main.cpp(10): error C2143: синтаксическая ошибка: отсутствие "," перед "&"
1>d:\dropbox\c++\c++\project1\project1\main.cpp(18): error C2780: long double sum_values(const T &,const int): требует аргументов: 2, имеется: 3
1> d:\dropbox\c++\c++\project1\project1\main.cpp(10): см. объявление "sum_values"
1>d:\dropbox\c++\c++\project1\project1\main.cpp(18): error C2780: long double sum_values(const T &): требует аргументов: 1, имеется: 3
1> d:\dropbox\c++\c++\project1\project1\main.cpp(4): см. объявление "sum_values"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,469
Завершенные тесты: 1
14.07.2014, 18:47     Составить функцию, принимающую переменное количество параметров #7
Цитата Сообщение от 0x10 Посмотреть сообщение
C++
4
long double
Только со встроенными типами проканает.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
14.07.2014, 18:54     Составить функцию, принимающую переменное количество параметров #8
SatanaXIII, да я из формулировки задания решил, что ему принципиально нужна функция в возвращаемым значением такого типа.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
14.07.2014, 18:58  [ТС]     Составить функцию, принимающую переменное количество параметров #9
Я решил отладить программу, попробовал скомпилировать программу без шаблона, получилось что то вроде этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
long double sum_values(const int& item)
{
    return item;
}
  
long double sum_values(const int& item, const int&... args)
{
    return item + sum_values(args...);
}
 
int main()
{
    std::cout << sum_values(1, 2.0f, 3.0) << std::endl;
    return 0;
}
При компиляции выводятся ошибки:
1>------ Построение начато: проект: project1, Конфигурация: Debug Win32 ------
1> main.cpp
1>d:\dropbox\c++\c++\project1\project1\main.cpp(8): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "args"
1>d:\dropbox\c++\c++\project1\project1\main.cpp(8): error C3646: args: неизвестный спецификатор переопределения
1>d:\dropbox\c++\c++\project1\project1\main.cpp(8): error C2059: синтаксическая ошибка: )
1>d:\dropbox\c++\c++\project1\project1\main.cpp(10): error C2065: args: необъявленный идентификатор
1>d:\dropbox\c++\c++\project1\project1\main.cpp(10): error C2143: синтаксическая ошибка: отсутствие ")" перед "..."
1>d:\dropbox\c++\c++\project1\project1\main.cpp(10): error C2059: синтаксическая ошибка: )
1>d:\dropbox\c++\c++\project1\project1\main.cpp(15): warning C4244: аргумент: преобразование "float" в "const int", возможна потеря данных
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Также, хочу заметить, не могу добавить хедер <initializer_list>, просто не видит и всё. Может быть у меня устаревшая IDE? MSVS 2012, c++11 должна поддерживать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 19:09     Составить функцию, принимающую переменное количество параметров
Еще ссылки по теме:

Написать функцию, принимающую массив структур Student - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct STUDENT // структура STUDENT { string name; ...

Написать функцию, принимающую параметры, заданные явно и пропущенные - C++
1. Написати функцію із параметрами за замовчуванням відповідно до варіанту, продемонструвати різні способи виклику функції: • з...

Написать функцию, принимающую в качестве параметра одномерный массив - C++
Запишите и испытайте функцию. Входными параметрами составляемых функций являются одномерные массивы X и (или) Y размером n.Для каждого...

Помогите составить регулярку, принимающую несколько знаков - C++
Короче нужно составить регулярку которая будет принимкть буквы числа и знаки - _ делал как обычно составлял на php {2,20} но тут...

Можно ли создать функцию, принимающую двумерный массив произвольного размера? - C++
Добрый вечер всем. Я прочитал в книге в главе Передача двумерных массивов в функцию следующую вещь: Я написал маленькую программку с...


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

Или воспользуйтесь поиском по форуму:
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
14.07.2014, 19:09     Составить функцию, принимающую переменное количество параметров #10
CHELOVEKPAUK, списки инициализации 12ая студия точно не поддерживала, вариадики - как видно, тоже.
Код рабочий (или как минимум притворяется таковым) http://ideone.com/WYlqQ9
Yandex
Объявления
14.07.2014, 19:09     Составить функцию, принимающую переменное количество параметров
Ответ Создать тему
Опции темы

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