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

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

Восстановить пароль Регистрация
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.06.2013, 03:36     Переменное число параметров функции - трабл с int #1
Функция - выводит среднее арифметическое своих аргументов. Рабочий пример с 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$
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 03:36     Переменное число параметров функции - трабл с int
Посмотрите здесь:

C++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
C++ Переменное число аргументов
C++ Трабл с обращением к функции класса
C++ Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n) (C/C++/Java)
что такое int argc, char *argv[] в качестве параметров главной (main) функции? C++
Как будет выглядеть заголовок функции, принимающей в качестве входных параметров два целых числа и возвращающей число с плавающей запятой двойной точн C++
C++ Составить функцию, принимающую переменное количество параметров
Переменное число параметров шаблона C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
15.06.2013, 05:50     Переменное число параметров функции - трабл с int #2
xtorne21st, в последний момент в p попадает какой то мусор.

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

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