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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.87
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
#1

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

28.05.2009, 05:40. Просмотров 5717. Ответов 13
Метки нет (Все метки)

Вычисление суммы ряда значений оформить в
виде функции с переменным числом параметров.
прога вот:
1.rar
В ней не хватает как рас функции с переменным числом параметров
Как эту функцию задать?? Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2009, 05:40     Функция с переменным числом параметров
Посмотрите здесь:

C++ Функция с переменным числом параметров
C++ Builder Функция с переменным числом параметров
В функция с переменным числом параметров. C++
C++ программа и функция с переменным числом параметров
C++ Функция с переменным числом параметров, как узнать кличество переданных параметров?
Функция с переменным числом параметров C++
Функция с переменным числом параметров C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
28.05.2009, 06:36     Функция с переменным числом параметров #2
Программист может разрабатывать свои функции с переменным числом параметров. Для обеспечения удобного способа доступа к аргументам функции с переменным числом параметров имеются три макроопределения (макросы) va_start, va_arg, va_end, находящиеся в заголовочном файле stdarg.h. Эти макросы указывают на то, что функция, разработанная пользователем, имеет некоторое число обязательных аргументов, за которыми следует переменное число необязательных аргументов. Обязательные аргументы доступны через свои имена как при вызове обычной функции. Для извлечения необязательных аргументов используются макросы va_start, va_arg, va_end в следующем порядке.

Макрос va_start предназначен для установки аргумента arg_ptr на начало списка необязательных параметров и имеет вид функции с двумя параметрами:

void va_start(arg_ptr,prav_param);

Параметр prav_param должен быть последним обязательным параметром вызываемой функции, а указатель arg_prt должен быть объявлен с предопределением в списке переменных типа va_list в виде:

va_list arg_ptr;

Макрос va_start должен быть использован до первого использования макроса va_arg.

Макрокоманда va_arg обеспечивает доступ к текущему параметру вызываемой функции и тоже имеет вид функции с двумя параметрами

type_arg va_arg(arg_ptr,type);

Эта макрокоманда извлекает значение типа type по адресу, заданному указателем arg_ptr, увеличивает значение указателя arg_ptr на длину использованного параметра (длина type) и таким образом параметр arg_ptr будет указывать на следующий параметр вызываемой функции. Макрокоманда va_arg используется столько раз, сколько необходимо для извлечения всех параметров вызываемой функции.

Макрос va_end используется по окончании обработки всех параметров функции и устанавливает указатель списка необязательных параметров на ноль (NULL).

Рассмотрим применение этих макросов для обработки параметров функции вычисляющей среднее значение произвольной последовательности целых чисел. Поскольку функция имеет переменное число параметров будем считать концом списка значение равное -1. Поскольку в списке должен быть хотя бы один элемент, у функции будет один обязательный параметр.

Пример:

#include
int main()
{ int n;
int sred_znach(int,...);
n=sred_znach(2,3,4,-1);
/* вызов с четырьмя параметрами */
printf("n=%d",n);
n=sred_znach(5,6,7,8,9,-1);
/* вызов с шестью параметрами */
printf("n=%d",n);
return (0);
}
int sred_znach(int x,...);
{
int i=0, j=0, sum=0;
va_list uk_arg;
va_start(uk_arg,x); /* установка указателя uk_arg на */
/* первый необязятельный параметр */
if (x!=-1) sum=x; /* проверка на пустоту списка */
else return (0);
j++;
while ( (i=va_arg(uk_arg,int))!=-1)
/* выборка очередного */
{ /* параметра и проверка */
sum+=i; /* на конец списка */
j++;
}
va_end(uk_arg); /* закрытие списка параметров */
return (sum/j);
}
Так.
Для вашей задачи достаточно поменять последнюю строку на
C++
1
return (sum);
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 09:33  [ТС]     Функция с переменным числом параметров #3
спасибо огромное !!

Добавлено через 19 минут 41 секунду
А как вот из твоего примера сделать не среднее значение, а сумму??
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
28.05.2009, 09:37     Функция с переменным числом параметров #4
Цитата Сообщение от Patch Посмотреть сообщение
Для вашей задачи достаточно поменять последнюю строку на

return (sum);
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 09:48  [ТС]     Функция с переменным числом параметров #5
аа туплю)))) сори!!! Спасибо ограомное

Добавлено через 7 минут 43 секунды
а блок схема на него как примерно выглядит???
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
28.05.2009, 10:16     Функция с переменным числом параметров #6
Даже не знаю, как нарисовать.
Просто в цикле проверка условия "есть ли еще аргументы".
Итого:
1)ромб - "условие - есть ли аргументы" - прицеплен к выходы прямоугольника 2
2)прямоугольник - "сложение аргументов" - прицеплен к ветке "да" ромба
3)прямоугольник - "выдача ответа" - прицеплен к ветке "нет" ромба
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 10:25  [ТС]     Функция с переменным числом параметров #7
Вот выдаёт ошибку при компилировании:
http://pic.ipicture.ru/uploads/090528/9J3TY1kpDV.jpg
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 10:29  [ТС]     Функция с переменным числом параметров #8
g.rar - это прога сама
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
28.05.2009, 11:04     Функция с переменным числом параметров #9
Ну и правильно.
у тебя после int summa(...) стоит ";"
Компилятор полагает, что объявление завершено.
А ты тут скобку открываешь.
А к чему твоя скобка относится - не пишешь.
Вот он и теряется в догадках.
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 15:03  [ТС]     Функция с переменным числом параметров #10
убрал и стало ещё больше ошибок!!!! Можешь поправить и залить??

Добавлено через 3 часа 26 минут 46 секунд
Хоть ответте што не правильно плз))

Добавлено через 24 минуты 10 секунд
Походу мой Borland C++ не понимает макросы! что посоветуешь скачать, что бы норм работалось и можно даже ссылочку))
Evg
Эксперт CАвтор FAQ
17264 / 5518 / 342
Регистрация: 30.03.2009
Сообщений: 15,020
Записей в блоге: 26
28.05.2009, 15:14     Функция с переменным числом параметров #11
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
убрал и стало ещё больше ошибок!!!! Можешь поправить и залить??
Выдачу компилятора в студию!

Цитата Сообщение от Sasuke-sama Посмотреть сообщение
Хоть ответте што не правильно плз))
Как же тебе ответят, еслиниктоне знает, что у тебя за проблема

Цитата Сообщение от Sasuke-sama Посмотреть сообщение
Походу мой Borland C++ не понимает макросы!
Прежде чем грешить на компилятор, убедись сначала в том, что у тебя руки не кривые

Цитата Сообщение от Sasuke-sama Посмотреть сообщение
можно даже ссылочку))
С помощью функции с переменным числом параметров посчитать сумму
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
28.05.2009, 15:53     Функция с переменным числом параметров #12
Sasuke-sama,
Публикуй свой код, который компилиш, и сообщения компилятора.
Телепатов-то среди нас нет.
У меня твой код работает(последний опубликованный, и без ";" ).
Sasuke-sama
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 16:39  [ТС]     Функция с переменным числом параметров #13
Яснео спасибо я откомпилил твой код, ну и свой, токо не понял для чего вводить
Код
printf("n=%d",n);
n=summa(5,6,7,8,9,-1);  // vyzov s 6 parametrami
если он всёравно считает элементы из 1 строки с 4 параметрами

Добавлено через 1 минуту 50 секунд
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
Вложение 4526 - это прога сама
вот кста я прогу заливал))

Добавлено через 2 минуты 59 секунд
Код
http://www.cyberforum.ru/cpp-builder/thread36984.html
Это я темку тож создал)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2009, 17:46     Функция с переменным числом параметров
Еще ссылки по теме:

Функция с переменным числом параметров C++
C++ Функция с переменным числом параметров
C++ Функция с переменным числом параметров
C++ Функция с переменным числом параметров (задание)
Функция с переменным числом параметров находящая максимальный элемент в списке параметров C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17264 / 5518 / 342
Регистрация: 30.03.2009
Сообщений: 15,020
Записей в блоге: 26
28.05.2009, 17:46     Функция с переменным числом параметров #14
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
Это я темку тож создал)))
Да я просто не сразу заметил
Yandex
Объявления
28.05.2009, 17:46     Функция с переменным числом параметров
Ответ Создать тему
Опции темы

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