С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
1

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

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

Author24 — интернет-сервис помощи студентам
Кто силен в теории, ответьте, пожалуйста:

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

Как правильно работать с данными внутри функции?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2013, 06:26
Ответы с готовыми решениями:

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

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

Передача строк в функцию со сменным количеством параметров
Нужно передать строки в функцию f со сменным количеством параметров, передача должна остановиться...

Функция со сменным количеством параметров для структуры
Здравствуйте! Есть задание написать функцию со сменным количеством параметром. Этими параметрами...

11
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
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
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
15.01.2013, 09:59 3
Пaтрик, думаю имелось ввиду это
C++
1
void func (int count, ...) {}
1
17 / 8 / 2
Регистрация: 06.01.2013
Сообщений: 163
15.01.2013, 10:01 4
1. Как запрограммировать функцию со сменным количеством параметров?
можно передавать один параметр массив. В массиве может быть уже несколько параметров (элементов массива).
0
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
15.01.2013, 10:04 5
Kastaneda, просто я в вашем варианте не особо секу, поэтому предложил вариант с initializer_list как один из возможных.
0
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.01.2013, 10:34 7
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
0
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
15.01.2013, 10:38 8
Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
Ну на гнушном сайте точно написано http://gcc.gnu.org/onlinedocs/... acros.html
А про стандарт сам только что на википедии увидел, может там ошибка, или может стоит поискать в стандарте "Variadic Macros", возможно там просто не __VA_ARGS__, а что-нибудь другое.
0
Пaтрик
15.01.2013, 10:40
  #9

Не по теме:

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

0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
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
Почетный модератор
12271 / 5336 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
15.01.2013, 10:46 11
anna93, одна тема - один вопрос. На будущее.
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,939
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2013, 11:06
Помогаю со студенческими работами здесь

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

Разработать функцию с переменным количеством параметров
Добрый день, уважаемые программисты! Прошу помочь в поиске ошибки задание: Разработать функцию с...

Разработать функцию с переменным количеством параметров
Помогите пожалуйста: Разработать функцию с переменным числом параметров ({x}_{1}, {x}_{2}, ... ,...

Разработать функцию с переменным количеством параметров
Функция должна вернуть наименьшее из введенных значений. #include &lt;iostream&gt; #include &lt;cstdlib&gt;...


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

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