Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1294 / 466 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
1

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

03.03.2014, 21:02. Просмотров 737. Ответов 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2014, 21:02
Ответы с готовыми решениями:

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

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

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

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

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
2
14043 / 7524 / 1781
Регистрация: 30.01.2014
Сообщений: 12,581
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;
}
1
Эксперт С++
4967 / 3074 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
03.03.2014, 22:34 3
Ты передаёшь int, а пытаешься получить float. Проблема в этом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2014, 22:34

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

функции с переменным количеством параметров
для некоторого класса необходимо чтобы его конструктор принимал переменное количество параметров....

Функции с переменным количеством параметров
Прописываю в заголовке: void __fastcall TestClass::Test(int x, ...); компилятор выдает ошибку:...

Возвращение массива в функции с переменным количеством параметров
задание Пoследoвaтeльнocть вещeствeнныx пoлoжитeльныx пеpeмeнных, ограничeннaя пeремeннoй co...

Функции с переменным числом параметров: объяснить код
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int sum(int k, ...) { int s =...


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

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

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