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

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

Восстановить пароль Регистрация
 
anna93
 Аватар для anna93
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 9
15.01.2013, 06:26     Как запрограммировать функцию со сменным количеством параметров #1
Кто силен в теории, ответьте, пожалуйста:

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

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

Написать функцию со сменным числом параметров для перевода чисел из двичной системы счисления в троичную C++
C++ Написать функцию со сменным числом параметров
C++ Написать программу, которая реализует функцию с неограниченным количеством параметров, организовывающую форматированный вывод на экран.
C++ подскажите плз функцию с неограниченным количеством параметров
Функция со сменным числом параметров C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 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. Хз. Вопрос не понятный
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
15.01.2013, 09:59     Как запрограммировать функцию со сменным количеством параметров #3
Пaтрик, думаю имелось ввиду это
C++
1
void func (int count, ...) {}
solmaxa
17 / 8 / 1
Регистрация: 06.01.2013
Сообщений: 163
15.01.2013, 10:01     Как запрограммировать функцию со сменным количеством параметров #4
1. Как запрограммировать функцию со сменным количеством параметров?
можно передавать один параметр массив. В массиве может быть уже несколько параметров (элементов массива).
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
15.01.2013, 10:04     Как запрограммировать функцию со сменным количеством параметров #5
Kastaneda, просто я в вашем варианте не особо секу, поэтому предложил вариант с initializer_list как один из возможных.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 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 поддерживаются.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
15.01.2013, 10:34     Как запрограммировать функцию со сменным количеством параметров #7
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
15.01.2013, 10:38     Как запрограммировать функцию со сменным количеством параметров #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Kastaneda, В стандарте ни слова про __VA_ARGS__. Так что...
Ну на гнушном сайте точно написано http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
А про стандарт сам только что на википедии увидел, может там ошибка, или может стоит поискать в стандарте "Variadic Macros", возможно там просто не __VA_ARGS__, а что-нибудь другое.
Пaтрик
15.01.2013, 10:40
  #9

Не по теме:

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

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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.
Taatshi
Администратор
 Аватар для Taatshi
11207 / 4792 / 247
Регистрация: 05.04.2011
Сообщений: 13,322
Записей в блоге: 2
15.01.2013, 10:46     Как запрограммировать функцию со сменным количеством параметров #11
anna93, одна тема - один вопрос. На будущее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 11:06     Как запрограммировать функцию со сменным количеством параметров
Еще ссылки по теме:

C++ работа с функциями со сменным числом параметров
C++ Шаблон с переменным количеством параметров
Функции со сменным количеством параметров C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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
Как запрограммировать функцию со сменным количеством параметров
Yandex
Объявления
15.01.2013, 11:06     Как запрограммировать функцию со сменным количеством параметров
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru