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

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

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Переменное число параметров функции - трабл с int - C++

15.06.2013, 03:36. Просмотров 315. Ответов 2
Метки нет (Все метки)

Функция - выводит среднее арифметическое своих аргументов. Рабочий пример с double:
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
#include <cstdarg>
#include <iostream>
 
double mean(double arg, ...)
{
    va_list ap;
    double sum = 0;
    int count = 1;
 
    sum += arg;
    va_start(ap, arg);
    for ( ; ; )
    {
        if (double p = va_arg(ap, double))
        {
            sum += p;
            ++count;
            continue;
        }
        break;
    }
 
    va_end(ap);
    return sum / count;
}
 
int main()
{
    std::cout << mean(1.0, 2.0, 3.0, 4.0) << std::endl;
}
Bash
1
2
3
ilyuha21st@coldshoot:~/Projects$ ./prog
2.5
ilyuha21st@coldshoot:~/Projects$
Тоже самое, но с int - не работает:
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
#include <cstdarg>
#include <iostream>
 
int mean(int arg, ...)
{
    va_list ap;
    int sum = 0;
    int count = 1;
 
    sum += arg;
    va_start(ap, arg);
    for ( ; ; )
    {
        if (int p = va_arg(ap, int))
        {
            sum += p;
            ++count;
            continue;
        }
        break;
    }
 
    va_end(ap);
    return sum / count;
}
 
int main()
{
    std::cout << mean(1, 2, 3, 4) << std::endl;
}
Bash
1
2
3
ilyuha21st@coldshoot:~/Projects$ ./prog
124374810
ilyuha21st@coldshoot:~/Projects$
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 03:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переменное число параметров функции - трабл с int (C++):

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

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

что такое int argc, char *argv[] в качестве параметров главной (main) функции? - C++
И зачем

Как в выделенную память записать поочередно число int, массив char[n], и еще число int - C++
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char, и еще число int?

Переменное число аргументов - C++
РАСПАКОВКА есть ли способы кроме рекурсии и передачи как списка инициализации?

Переменное число аргументов - C++
Есть такой код. Хочу сделать, чтобы operator() принимал переменное число аргументов переменных типов. Т.е. передаём template&lt;int,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
15.06.2013, 05:50 #2
xtorne21st, в последний момент в p попадает какой то мусор.

У тебя всего 2 варианта,
1) Передавать функции количество параметров.
2) В конце вызова писать некоторое уникальное значение, 0 например, тогда даже код не придётся править.
А с double тебе просто повезло, в памяти оказался 0.
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.06.2013, 14:17 #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
for ( ; ; )
Избався от такого цикла. Должно быть вполне конкретное условие. http://www.cplusplus.com/reference/cstdarg/va_arg/
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 14:17
Привет! Вот еще темы с ответами:

Функции float average(int arrray[],int from,int to) - C++
Напишите код функции float average(int arrray,int from,int to). Возвращаемым значением функции должно быть среднее значение элементов...

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

Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n) (C/C++/Java) - C++
Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n) (C/C++/Java), function NumberOfZeroes(n: longint): integer (Pascal),...

Как будет выглядеть заголовок функции, принимающей в качестве входных параметров два целых числа и возвращающей число с плавающей запятой двойной точн - C++
1. int a, int b: f ( double ) 2. double f ( int a, int b ) 3. int f ( double a, int b ) 4. f ( int a, int b, return double ) 5....


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

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

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