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

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

Войти
Регистрация
Восстановить пароль
 
anna93
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
#1

Как запрограммировать функцию со сменным количеством параметров - C++

15.01.2013, 06:26. Просмотров 787. Ответов 11
Метки нет (Все метки)

Кто силен в теории, ответьте, пожалуйста:

Как запрограммировать функцию со сменным количеством параметров?

Как правильно работать с данными внутри функции?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 06:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как запрограммировать функцию со сменным количеством параметров (C++):

Функции со сменным количеством параметров - C++
Мне нужно написать функцию, которая 3 раза может принять разное количество параметров и вывести минимальных из них. Например ввести 5,...

Написать функцию со сменным числом параметров - C++
нужно написать функцию со сменным числом параметров, которая находит углы n-угольника по заданным сторонам. заранее благодарю!

Написать функцию со сменным числом параметров для перевода чисел из двичной системы счисления в троичную - C++
используя функции, решить задачи. Массив должен передаваться в функцию как параметр. 1) Заданный двумерный массив N x M. Найти в нём...

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

Функция со сменным числом параметров - C++
Нужно написать программу на С в которой будет функция у какую передаются масивы целых чисел. Элементы с номерами 0,2,4 и т.д. сортовать...

работа с функциями со сменным числом параметров - C++
Не пойму почему не работает. выдает ошибки: C:\4ko.cpp:9: error: expected `)' before '...' token ...

11
Пaтрик
416 / 391 / 39
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
15.01.2013, 07:48 #2
1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <initializer_list>
#include <iostream>
#include <iterator>
 
template < typename T >
void func(const std::initializer_list<T>& lst)
{
    std::copy(lst.begin(), lst.end(), std::ostream_iterator<int>(std::cout, " "));
}
 
int main()
{
    func({ 1, 2, 3, 4, 5 });
}
2. Хз. Вопрос не понятный
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.01.2013, 09:59 #3
Пaтрик, думаю имелось ввиду это
C++
1
void func (int count, ...) {}
1
solmaxa
17 / 8 / 2
Регистрация: 06.01.2013
Сообщений: 163
15.01.2013, 10:01 #4
1. Как запрограммировать функцию со сменным количеством параметров?
можно передавать один параметр массив. В массиве может быть уже несколько параметров (элементов массива).
0
Пaтрик
416 / 391 / 39
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
15.01.2013, 10:04 #5
Kastaneda, просто я в вашем варианте не особо секу, поэтому предложил вариант с initializer_list как один из возможных.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.01.2013, 10:32 #6
Цитата Сообщение от Пaтрик Посмотреть сообщение
Kastaneda, просто я в вашем варианте не особо секу
Это как раз класический пример функции с переменным числом аргументов, а твой (мы же на "Ты") вариант - это уже нововведение языка, и препод это скорее всего даже не поймет.

В С99 и gnu extension есть еще макросы с переменным числом аргументов
C++
1
2
3
4
5
6
7
8
9
#include<cstdio>
 
#define PRINT(...) printf(__VA_ARGS__);
 
int main()
{
   PRINT("Hello\n")
   PRINT("%s%d", "Var = ", 5)
}
http://liveworkspace.org/code/3SgX5D

Добавлено через 4 минуты
Цитата Сообщение от Kastaneda Посмотреть сообщение
В С99 и gnu extension
Хм, на википедии написано, что они еще в С++11 поддерживаются.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.01.2013, 10:34 #7
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
15.01.2013, 10:38 #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
Ну на гнушном сайте точно написано http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
А про стандарт сам только что на википедии увидел, может там ошибка, или может стоит поискать в стандарте "Variadic Macros", возможно там просто не __VA_ARGS__, а что-нибудь другое.
0
Пaтрик
15.01.2013, 10:40
  #9

Не по теме:

ForEveR, Kastaneda и началась битва титанов в 2013 на cyberforum

0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
15.01.2013, 10:43 #10
Kastaneda, Я все-таки не прав видимо. Прошу прощения.

C99 features
To preserve a high degree of compatibility, a few minor changes to the language were introduced in collaboration with the C standards committee:

long long.
Extended integral types (i.e. rules for optional longer int types).
UCN changes [N2170==07-0030] ``lift the prohibitions on control and basic source universal character names within character and string literals.''
concatenation of narrow/wide strings.
Not VLAs (Variable Length Arrays; thank heaven for small mercies).

Some extensions of the preprocessing rules were added:

__func__ a macro that expands to the name of the lexically current function
__STDC_HOSTED__
_Pragma: _Pragma( X ) expands to #pragma X
vararg macros (overloading of macros with different number of arguments)


C++
1
        #define report(test, ...) ((test)?puts(#test):printf(_ _VA_ARGS_ _))
empty macro arguments

A lot of standard library facilities were inherited from C99 (essentially all changes to the C99 library from its C89 predecessor):
http://www.stroustrup.com/C++11FAQ.html#C99

Ну и 16.3/5

The identifier _ _ VA_ARGS _ _ shall occur only in the replacement-list of a function-like macro that uses the
ellipsis notation in the parameters.
1
Taatshi
Администратор
11481 / 4948 / 253
Регистрация: 05.04.2011
Сообщений: 13,595
Записей в блоге: 2
15.01.2013, 10:46 #11
anna93, одна тема - один вопрос. На будущее.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
15.01.2013, 11:06 #12
Ну а это из 2003 стандарта:
When there is no parameter for a given argument, the argument is passed in such a way that the receiving
function can obtain the value of the argument by invoking va_arg (18.7).
и собственно, 18.7
Как запрограммировать функцию со сменным количеством параметров
0
15.01.2013, 11:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 11:06
Привет! Вот еще темы с ответами:

задача на функции со сменным числом параметров. подскажите, пожалуйста решение - C++
Дано натуральное число n (4 &lt;n &lt;10) и целые числа a1, a2, ... an. Посчитать: a1, -a1a2, a1a2a3 ..., (-1) ^ (n + 1) a1a2 ... an;

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

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

Шаблон с переменным количеством параметров - C++
У меня компилятор Visual Studio 2012, но не работает следующий код: #include &lt;iostream&gt; #include &lt;string&gt; void show_list() {} ...


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

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

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