Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
Заблокирован
1

Написать функцию с переменным числом параметров, найти сумму чисел по заданной формуле

13.11.2015, 20:43. Показов 3831. Ответов 20
Метки нет (Все метки)

помогите решить указанную задачу, используя функции с переменным числом параметров.
1. Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле:
S=a1*a2+a3*a4+a5*a6+. . . . .
Написать вызывающую функцию main, которая обращается к функции sum не менее трех раз с количеством параметров 8, 10, 12.
Пожалуйста)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2015, 20:43
Ответы с готовыми решениями:

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int по формуле: S=a1*a2+a3*a4+a5*a
Всем доброго времени суток! Дана следующая задача: Написать функцию sum с переменным числом...

Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int
Написать функцию sum с переменным числом параметров, которая находит сумму чисел типа int. Написать...

Написать функцию с переменным числом параметров, находящую минимальное из чисел типа int
Помогите и объясните: Написать функцию fmin с переменным числом параметров, которая находит...

Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа float
Прошу помочь в следующем. Есть задание: Написать функцию mult с переменным числом параметров,...

20
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
14.11.2015, 08:39 2
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
#include <iostream>
#include <cstdarg>
#include <cstdlib>
 
int S(int n, ...)
{
  va_list vl;
  va_start(vl, n);
 
  int r = 0;
 
  for (int i = 0; i < n; i += 2)
    r += va_arg(vl, int) * va_arg(vl, int);
 
  va_end(vl);
 
  return r;
}
 
int main ()
{
  std::cout << S(8, 1, 2, 3, 4, 5, 6, 7, 8);
 
  system("pause");
  return 0;
}
1
Заблокирован
14.11.2015, 12:23  [ТС] 3
nmcf, а можете комментарии написать пожалуйста
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
14.11.2015, 12:31 4
А что комментировать-то? vl - это список аргументов, переданных через многоточие, va_start() - инициализация списка. va_arg() - получение очередного элемента указанного типа.
0
Заблокирован
14.11.2015, 22:16  [ТС] 5
nmcf, мне надо эту строчку копировать
C++
1
std::cout << S(8, 1, 2, 3, 4, 5, 6, 7, 8);
для 10 ,12 параметров

Добавлено через 50 минут
nmcf, Надо проверять n на четность?
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
15.11.2015, 14:22 6
Просто добавляешь сколько надо. Первое число - количество, остальные - сами значения. Можешь проверить на чётность, если это важно.
0
Заблокирован
15.11.2015, 14:41  [ТС] 7
nmcf, nmcf, т.е. не обязательно проверять на четность?
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
15.11.2015, 16:55 8
Если возможен вызов с нечётным количеством, то надо проверять.
0
Заблокирован
15.11.2015, 17:00  [ТС] 9
nmcf,а можете написать код для проверки и скажите куда его вставить пожалуйста?
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
15.11.2015, 19:13 10
Что происходить-то должно при нечётном количестве?
Вот так просто проигнорирует лишний элемент:
C++
1
2
  for (int i = 0; i < n / 2; ++i)
    r += va_arg(vl, int) * va_arg(vl, int);
0
Заблокирован
16.11.2015, 21:35  [ТС] 11
nmcf, nmcf,nmcf, Только сумма почему то не совпадает с расчетами на калькуляторе
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
16.11.2015, 23:17 12
В моём примере всё совпадает, я проверял. Программу показывай.
0
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,208
17.11.2015, 00:06 13
Функции с переменным числом параметров
1
Заблокирован
17.11.2015, 16:57  [ТС] 14
nmcf,
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
29
30
31
#include "stdafx.h"
#include <iostream>
#include <cstdarg>
#include <cstdlib>
#include <windows.h>
#include <locale>// библиотека для кириллицы
using namespace std;
int S(int n,int ...)//функция суммы
{
    va_list vl; //список аргументов, переданных через многоточие
    va_start(vl, n);//va_start() - инициализация списка
 
    int r = 0;
 
    for (int i = 0; i < n / 2; ++i) //  цикл для нахождения суммы     S=a1*a2+a3*a4+a5*a6+...
        r += va_arg(vl, int) * va_arg(vl, int); //va_arg() - получение очередного элемента указанного типа.
 
    va_end(vl);  /* выполнение корректного выхода */
 
    return r;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout <<"Вычисление суммы для 8 параметров"<<endl<< S(8, 1, 2, 3, 4, 5, 6, 7,8) << endl;
    cout <<"Вычисление суммы для 10 параметров"<<endl<< S(10, 1, 2, 3, 4, 5, 6, 7, 8,9,10) << endl;
    cout <<"Вычисление суммы для 12 параметров"<<endl<< S(12, 1, 2, 3, 4, 5, 6, 7, 8,9,10,11,12) << endl;
    system("pause");
    return 0;
}
выводит 120 220 364,а должно выводить 100 190 322
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.11.2015, 11:00 15
На восьмую строку посмотри. Откуда там лишний int? Вот так должно быть:
C++
1
int S(int n,...)
0
Заблокирован
19.11.2015, 13:20  [ТС] 16
nmcf, в вашем коде было
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.11.2015, 17:41 17
Мой пример во втором сообщении. Где там лишний int?
0
Заблокирован
19.11.2015, 18:09  [ТС] 18
nmcf, Запусти программу и посмотри,там неверно у тебя,я убрала этот int, выводит 120 220 364
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
19.11.2015, 23:19 19
Я проверял ещё до того, как ответил. Всё верно.
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 <iostream>
#include <cstdarg>
 
using namespace std;
 
int S(int n,...)//функция суммы
{
    va_list vl; //список аргументов, переданных через многоточие
    va_start(vl, n);//va_start() - инициализация списка
 
    int r = 0;
 
    for (int i = 0; i < n / 2; ++i) //  цикл для нахождения суммы   S=a1*a2+a3*a4+a5*a6+...
        r += va_arg(vl, int) * va_arg(vl, int); //va_arg() - получение очередного элемента указанного типа.
 
    va_end(vl);  /* выполнение корректного выхода */
 
    return r;
}
 
int main()
{
    cout <<"Вычисление суммы для 8 параметров"<<endl<< S(8, 1, 2, 3, 4, 5, 6, 7, 8) << endl;
    cout <<"Вычисление суммы для 10 параметров"<<endl<< S(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) << endl;
    cout <<"Вычисление суммы для 12 параметров"<<endl<< S(12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) << endl;
    
    return 0;
}
Результат:

Вычисление суммы для 8 параметров
100
Вычисление суммы для 10 параметров
190
Вычисление суммы для 12 параметров
322
0
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 153
21.11.2015, 12:49 20
nmcf, no
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2015, 12:49

Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (2, 4, 9, 16,. . . ) типа in
Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел,...

Написать функцию с переменным числом параметров
Написать функцию с переменным числом параметров, которая считае значение полинома вида: c0 + c1*x +...

Написать функцию с переменным числом параметров
Задание дали такое: Написать функцию с переменным числом параметров, в соответствии с вариантом,...

Написать функцию с переменным числом параметров
Среднее арифметическое из элементов в списке параметров , стоящие на четных местах. вот что у...


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

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

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