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

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

Войти
Регистрация
Восстановить пароль
 
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,203
#1

Функции с переменным количеством параметров, stdarg.h. Исправить код - C++

03.03.2014, 21:02. Просмотров 390. Ответов 2

Почему не работает? В итоге получается 0, а если в функции все что надо заменить с float на 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
#include "stdafx.h"
#include <iostream>
using std::cout;
#include <conio.h>
#include <stdarg.h>
#include <iomanip>
using std::setprecision;
using std::ios;
using std::fixed;
 
float sum(int n, ...);
 
int main()
{
    cout << fixed << setprecision(3) << sum(5,1,2,3,4,5);
    getch();
    return 0;
}
 
float sum(int n, ...)
{
    va_list VL;
    float s = 0;
    va_start(VL, n);
    for (int i = 0; i < n; i++)
        s += va_arg(VL,float);
    return s;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 21:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции с переменным количеством параметров, stdarg.h. Исправить код (C++):

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

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

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

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

Функция с переменным количеством параметров - C++
Здравствуйте, возникла вот такая проблема: создаю функцию с переменным кол-ом параметров. Пример сделан мною по аналогии с...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7089 / 4230 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
03.03.2014, 22:26 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Керра, две проблемы:
1) float при передаче через эллипсис расширяется до double (как и short, char до int)
2) ты передаешь целые числа, a ждешь float (не забываем, что эллипсис уничтожает контроль системы типов С++)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    cout << fixed << setprecision(3) << sum(5,1.f,2.f,3.f,4.f,5.f);
    return 0;
}
 
float sum(int n, ...)
{
    va_list VL;
    float s = 0;
    va_start(VL, n);
    for (int i = 0; i < n; i++)
        s += (float)va_arg(VL, double);
    va_end(VL);
    return s;
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
03.03.2014, 22:34 #3
Ты передаёшь int, а пытаешься получить float. Проблема в этом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 22:34
Привет! Вот еще темы с ответами:

Функция с переменным количеством параметров - C++
Доброго времени суток! Я озадачился таким вопросом - как производится компиляция функций с переменным числом параметров? Компилятор создаёт...

Функция с переменным количеством параметров-оъектов - C++
Нашел на форуме пример функции с переменным количеством int, подскажите как переписать ее для передачи числа параметров-объектов...

Функция суммы с переменным количеством параметров - C++
На просторах форума нашёл код. Стало интересно посмотреть что выводят его отдельные части(отдельно переменная t, sum одного из аргументов и...

Шаблон функции с переменным количеством аргументов - C++
Добрый вечер, мне необходимо при помощи шаблона функции реализовать поиск минимального числа(тип данных не известен, количество чисел...


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

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

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