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

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

Войти
Регистрация
Восстановить пароль
 
Master_Yi
13 / 10 / 1
Регистрация: 22.12.2013
Сообщений: 359
#1

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

29.05.2014, 21:27. Просмотров 559. Ответов 5
Метки нет (Все метки)

Мне нужно написать функцию, которая 3 раза может принять разное количество параметров и вывести минимальных из них.
Например ввести 5, 10, 12 параметров и одна и та же функция должна посчитать минимум.

Ну я начал разбираться и нашел некий пример чего-то подобного(по идее он считает суму параметров, но не правильно):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int sum (int k, ...)
{
int *p = &k; 
int s=0;
for ( ; k!=0;k--)
s=s+*(++p);
return s;
}
int main()
{
cout<<"\nSuma(2,4,6)= "<<sum(2,4,6); //должен выводить суму 4+6
cout<<"\nSuma(4,1,2,3,4)= "<<sum(4,1,2,3,4); //должен выводить суму 1+2+3+4
}
Ответ всегда 3, что бы я не вводил.

Но я не знаю как понять этот пример что бы решить свой так что я задам пару вопросов для этого:
1)Что такое этот элемент "р" вообще? (int *p = &k; или *(++p)). Почему именно р?
2) int *p = &k; как работает эта штука?
2) *(++p) - что эти символы вокруг "р" делают?
3) int sum (int k, ...) - как оно вообще принимает данные? Оно записывает первый элемент а остальные в некий массив? Как к нему обращаться?

А еще я нарыл нечто более понятное:
va_list
va_start
va_arg
va_end
Это вообще по теме(?) и если это проще то объясните лучше на них =)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 21:27     Функции со сменным количеством параметров
Посмотрите здесь:

Как запрограммировать функцию со сменным количеством параметров - C++
Кто силен в теории, ответьте, пожалуйста: Как запрограммировать функцию со сменным количеством параметров? Как правильно работать...

задача на функции со сменным числом параметров. подскажите, пожалуйста решение - C++
Дано натуральное число n (4 &lt;n &lt;10) и целые числа a1, a2, ... an. Посчитать: a1, -a1a2, a1a2a3 ..., (-1) ^ (n + 1) a1a2 ... an;

Функция со сменным числом параметров - C++
Нужно написать программу на С в которой будет функция у какую передаются масивы целых чисел. Элементы с номерами 0,2,4 и т.д. сортовать...

Написать функцию со сменным числом параметров - C++
нужно написать функцию со сменным числом параметров, которая находит углы n-угольника по заданным сторонам. заранее благодарю!

работа с функциями со сменным числом параметров - C++
Не пойму почему не работает. выдает ошибки: C:\4ko.cpp:9: error: expected `)' before '...' token ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
29.05.2014, 21:38     Функции со сменным количеством параметров #2
Вот пример Вашей функции с комментариями
C++
1
2
3
4
5
6
7
8
9
10
double f(double n, ...)    //--заголовок с переменным числом параметров
{   double *p = &n;        //--установились на начало списка параметров
    double sum = 0, count = 0;    
    while (*p)         //--пока аргумент не равен нулю
    { sum+=(*p);         //--суммируем аргумент
      p++;             //--«перемещаемся на следующий аргумент
      count++;         //--считаем  количество аргументов
    }
    return sum);
}
Master_Yi
13 / 10 / 1
Регистрация: 22.12.2013
Сообщений: 359
29.05.2014, 21:50  [ТС]     Функции со сменным количеством параметров #3
Все-равно что-то неправильно. Ответ неправильный...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
 
using namespace std;
 
double summ(double n, ...)  
{   double *p = &n;     
    double sum = 0, count = 0;    
    while (*p)       
    { sum+=(*p);      
      p++;            
      count++;       
    }
    return (sum);
}
int main()
{
cout<<"\nSuma(2,4,6)= "<<summ(2,4,6);
cout<<"\nSuma(4,1,2,3,4)= "<<summ(4,1,2,3,4); 
}
И я так и не понял что такое *р... Что это за элемент? И как count влияет на цикл вообще?
Master_Yi
13 / 10 / 1
Регистрация: 22.12.2013
Сообщений: 359
01.06.2014, 20:00  [ТС]     Функции со сменным количеством параметров #4
Народ, может кто-то написать рабочий код приведенного выше примера? Если он будет работать я хоть смогу разобраться с своим примером... А так мне сунули всего 2 неправильных кода и называется УЧИ, умный будешь!

Добавлено через 26 минут
Я тут нашел что при подсчете с *р полнейшая фигня выходит:

Функции со сменным количеством параметров

Так вот я хочу узнать: как это исправить?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.06.2014, 20:38     Функции со сменным количеством параметров #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int sum (int k, ...)
{
    int result = 0; 
    va_list args;
    va_start(args, k);
 
    for (int i = 0; i < k; ++i)
    {
        result += va_arg(args, int);
    }
 
    va_end(args);
    return result;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 20:46     Функции со сменным количеством параметров
Еще ссылки по теме:

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

Вызов функции с неопределенным количеством параметров - C++
Делаю некоторую работу для университета на с++ и windows forms. Есть функция с неопределенным количеством параметров, но использование...

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

Функции с переменным количеством параметров, stdarg.h. Исправить код - C++
Почему не работает? В итоге получается 0, а если в функции все что надо заменить с float на int, то работает правильно. В чем ошибка? ...


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

Или воспользуйтесь поиском по форуму:
Master_Yi
13 / 10 / 1
Регистрация: 22.12.2013
Сообщений: 359
01.06.2014, 20:46  [ТС]     Функции со сменным количеством параметров #6
Jupiter, спасибо большое!
Yandex
Объявления
01.06.2014, 20:46     Функции со сменным количеством параметров
Ответ Создать тему
Опции темы

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