Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
1

С помощью функции с переменным числом параметров посчитать сумму

28.05.2009, 14:30. Показов 2460. Ответов 15
Метки нет (Все метки)

Что не так в коде программы????
xz.rar
НЕ компелируется, нужно было с помощью функции с переменным числом параметров посчитать сумму!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2009, 14:30
Ответы с готовыми решениями:

Найти сумму значений функции, используя функции с переменным числом параметров
вычеслить сумму значений функции у = х arctg x для 0<= х <= 2 с шагом 0,2

В функции с переменным числом параметров найти сумму всех элементов каждого массива
Bвести три массива чисел типа double . Первый элемент массива - количество чисел в массиве , их не...

Функции с переменным числом параметров
Набираю пример программы из книги. Все строчка в строчку, а не компилируется:( Помогите,...

Функции с переменным числом параметров
Помогите пожалуйста исправить ошибку в программе!!! Проблема в том, что не учитывается степень...

15
Maniac
Эксперт С++
1456 / 957 / 159
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 1
28.05.2009, 14:44 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
27
28
29
30
31
#include <iostream>
#include <cstdarg>//stdarg.h
using namespace std;
 
int summa(int,...);
 
int main(void)
{
    cout << summa(1,2,3);
    return 0;
}
int summa(int x,...)
{
    int i = 0, /*j = 0,*/ sum = 0;
    va_list uk_arg;
    va_start(uk_arg,x); 
 
    if (x)
        sum = x;
    else 
        return (0);
    //j++;
    while ( (i = va_arg(uk_arg,int)))
    { 
        sum += i; 
        //j++;
    }
    va_end(uk_arg);
 
    return (sum);
}
1
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 15:04  [ТС] 3
Мой Borland C++ не может понять команды
Код
va_list uk_arg va_start va_end
что нужно сделать или что скачать для того чтобы эта программа компилировалась???(просто из-за того что он их распознать не может он их не компилирует)

Добавлено через 4 минуты 13 секунд
От ссылочки не откажусь))) ну на прогу естественно!))
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
28.05.2009, 15:11 4
Во второй строке тебе оставили комментарий. Попробуй заменить её (вторую строку) на "#include <stdarg.h>" - это более стандартное имя

И когда есть какие-то проблемы с компиляцией - выкладывай что пишет компилятор. Читателей мысли у нас не водится
1
Maniac
Эксперт С++
1456 / 957 / 159
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 1
28.05.2009, 15:14 5
Dev-C++
1
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 15:20  [ТС] 6
Всё поправил но ошибка 1 осталась))
http://pic.ipicture.ru/uploads... DseVNg.jpg
(если та точку с запятой поставить то вообще ничего не происходит)
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
28.05.2009, 15:29 7
ISergey, у товарища -1 означает конец ввода, а у тебя 0

Добавлено через 2 минуты 17 секунд
Это предупреждение а не ошибка. Старые компиляторы ещё не воспринимали трюк с лишней парой скобок. Перепиши так

"while ( (i = va_arg(uk_arg,int)) != 0)"

Добавлено через 35 секунд
Да, при этом понимаю, что тот код, что тебе выложили, в качестве завешения ожидает 0, а не -1, как в твоём первоначальном
1
Maniac
Эксперт С++
1456 / 957 / 159
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 1
28.05.2009, 15:32 8
Я уже сам запутался Майкрософтский компилятор только так правильно результат выводит, Интеловский вообще ни в какую.
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 15:48  [ТС] 9
НУ мне это не важно особо))

Добавлено через 2 минуты 48 секунд
Люди СПАСИБО, но вот я поправил и теперь просто ничего не происходит куды вписать цыфирки или там ещё что, чтобы считало)))

Добавлено через 12 минут 0 секунд
А когда
Код
ехе
фаил загружает он запускает чёрное окно и оно быстро гаснит, около доли секунды горит))
0
Maniac
Эксперт С++
1456 / 957 / 159
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 1
28.05.2009, 15:58 10
Вот полностю рабочий код
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
32
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
 
int addThemAll( int numargs, ... )
{
    va_list listPointer;
    va_start( listPointer, numargs );
    int sum = 0;
    for( int i = 0 ; i < numargs; i++ )
    {
        int arg = va_arg( listPointer, int );
        sum += arg;
    }
    va_end( listPointer );
    return sum;
}
 
int main()
{
    // Try it out.
 
    printf("Calling 'addThemAll(104, 29, 46 ) 104 + 29 + 46 . . .\n");
    printf("%d\n", addThemAll(3,  104, 29, 46 ));
 
    printf("Calling 'addThemAll(2,3) 2 + 3 . . .\n");
    printf("%d\n", addThemAll(2,  2, 3));
 
    system("pause");
    return 0;
}
Блин затупил первый аргумент функции это количество параметров.
1
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
28.05.2009, 16:03 11
Цитата Сообщение от ISergey Посмотреть сообщение
Блин затупил первый аргумент функции это количество параметров.
Блин, файл уже удалил, а из под линуха zip не работает опять мудохаться лениво.
Но мне поначалу казалось, что первым аргументом подаётся слагаемое, а не количество. И сумма считается до тех пор, пока не встретим -1.
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 16:31  [ТС] 12
Воо спасибо а то я запутался совсем))) Ошибки в той главное исправил, паузу сделал а там ничего))) ВООБЩЕ СИНО ПОМОГ!!

Добавлено через 4 минуты 3 секунды
Ну могу так залить в виде текста!!!
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
#include<stdio.h>
int main()
{ int n;
int summa(int,...);
n=summa(2,3,4,-1);   // vyzov s 4 parametrami 
 
printf("n=%d",n);
n=summa(5,6,7,8,9,-1);  // vyzov s 6 parametrami
 
printf("n=%d",n);
return (0);
}
int summa(int x,...)
{
int i=0, j=0, sum=0;
va_list uk_arg;
va_start(uk_arg,x); // ustanovka ukazatelya uk_arg na
// 1 neobezatelnyi parametr
if (x!=-1) sum=x; // proverka na pustotu spiska
else return (0);
j++;
while ( (i=va_arg(uk_arg,int))!=-1)
// vyborka ocherednogo 
{ // parametra i proverka
sum+=i; // na konec spiska
j++;
}
va_end(uk_arg); // zakrytie spiska parametrov
return (sum);
}
Добавлено через 6 минут 34 секунды
Вот поправил он мну выдаёт сумму равную 9 это правильно???
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
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
int main()
{ int n;
int summa(int,...);
n=summa(2,3,4,-1);   // vyzov s 4 parametrami 
 
printf("n=%d",n);
n=summa(5,6,7,8,9,-1);  // vyzov s 6 parametrami
 
printf("n=%d",n);
return (0);
}
int summa(int x,...)
{
int i=0, j=0, sum=0;
va_list uk_arg;
va_start(uk_arg,x); // ustanovka ukazatelya uk_arg na
// 1 neobezatelnyi parametr
if (x!=-1) sum=x; // proverka na pustotu spiska
else return (0);
j++;
while ( (i=va_arg(uk_arg,int))!=-1)
// vyborka ocherednogo 
{ // parametra i proverka
sum+=i; // na konec spiska
j++;
}
va_end(uk_arg); // zakrytie spiska parametrov
system("pause");
return (sum);
}
Добавлено через 10 минут 27 секунд
а надо ли вводить
C++
1
2
printf("n=%d",n);
n=summa(5,6,7,8,9,-1);  // vyzov s 6 parametrami
если он сумму считает первой строки которая с 4 элементами
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
28.05.2009, 17:49 13
В очередной раз ты членораздельно вопрос не можешь сформулировать. Может тебя смущает, что код пустыми строками не свосем аккуратно сгруппирован. Надо так.

C
1
2
3
4
5
n=summa(2,3,4,-1);   // vyzov s 4 parametrami 
printf("n=%d",n);
 
n=summa(5,6,7,8,9,-1);  // vyzov s 6 parametrami
printf("n=%d",n);
И вообще, прежде чем послать сообщение, перечитай его и прикинь, можно ли из него что-нибудь понять
1
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 18:15  [ТС] 14
Ну дак зачем вводить вызов с 6 параметрами???
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,542
Записей в блоге: 30
28.05.2009, 18:16 15
Цитата Сообщение от Sasuke-sama Посмотреть сообщение
Ну дак зачем вводить вызов с 6 параметрами???
Для того, чтобы проверить, что у тебя функция правильноработает с разным количеством параметров. Или у тебя вопрос какой-то более глубокий?
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 33
28.05.2009, 18:19  [ТС] 16
НЕ ну я проверил, работает всё хорошо. Знач я ее могу подтереть))Да и кстати как проверить если он считает только с 4 параметрами, а с 6 уже опускает и не выводит его))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2009, 18:19

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

Функции с переменным числом параметров
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; int max(int k,...) { int *p=&amp;k; int maxi; ...

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

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


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

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

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