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

Функцию со списком аргументов переменной длины, подсчитать произведение чисел - C++

Восстановить пароль Регистрация
 
kate_miss
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 59
27.10.2010, 15:58     Функцию со списком аргументов переменной длины, подсчитать произведение чисел #1
ПОМОГИТЕ Написать программу, содержащую функцию со списком аргументов переменной длины. В функции необходимо подсчитать произведение чисел.
ПОДСКАЖИ С ЧЕГО НАЧИНАТЬ.....никогда не сталкивалась с функциями!!!!!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 15:58     Функцию со списком аргументов переменной длины, подсчитать произведение чисел
Посмотрите здесь:

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 C++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ C++
Списки аргументов переменной длины, эти аргументы должны быть исключительно типа "int"? C++
C++ Написать функцию вычисления произведения отрицательных чисел для трех целых аргументов
C++ Использование using над списком шаблонных аргументов переменного типа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.10.2010, 16:14     Функцию со списком аргументов переменной длины, подсчитать произведение чисел #2
Например так... В конце последовательности должен быть 0...

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
#include <iostream>
#include <cstdarg>
 
int func(int num, ...)
{
    int mult=1, t;
    va_list args;
    va_start(args, num);
    while(1)
    {
        t=va_arg(args, int);
        if(t==0)
            break;
        mult*=t;
    }
    va_end(args);
    return mult;
}
 
int main()
{
    std::cout<<func(1,2,3,4,0)<<'\n';
    return 0;
}
kate_miss
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 59
27.10.2010, 16:50  [ТС]     Функцию со списком аргументов переменной длины, подсчитать произведение чисел #3
нно не понимаю кк работает(((((((( можно немного комментариев????? пожалуйста
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.10.2010, 16:56     Функцию со списком аргументов переменной длины, подсчитать произведение чисел #4
Сам не особо в этом... Но как-то так.

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
#include <iostream>
#include <cstdarg>//Для переменного числа параметров
 
int func(int num, ...)//Функция которая принимает параметр типа int и еще несколько параметров
{
        int mult=1, t;
        va_list args;//Список аргументов
        va_start(args, num);//Начало в параметрах список и первый известный аргумент
        while(1)//Бесконечный цикл
        {
                t=va_arg(args, int);//Считываем аргумент типа int в список, после чего записываем его в t
                if(t==0)//Если t=0 прекращаем выполнение
                        break;
                mult*=t;//Умножаем mult на аргумент
        }
        va_end(args);//Заканчиваем 
        return mult;//Возвращаем mult
}
 
int main()
{
        std::cout<<func(1,2,3,4,0)<<'\n';//Пишем результат от функции. При 0 выполнение заканчивается.
        return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.10.2010, 17:07     Функцию со списком аргументов переменной длины, подсчитать произведение чисел #5
Можно еще и так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int product(int i, ...)
{
    int* pointer = &i;
    int result = 1;
    while(*pointer)
        result *= *pointer++;
    return result;
}
 
int main()
{
    printf("Product = %d\n", product(1, 2, 3, 4, 0));
    return 0;
}
Yandex
Объявления
27.10.2010, 17:07     Функцию со списком аргументов переменной длины, подсчитать произведение чисел
Ответ Создать тему
Опции темы

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