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

Сумма ряда с заданной точностью - C++

Восстановить пароль Регистрация
 
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
07.10.2010, 18:20     Сумма ряда с заданной точностью #1
Помогите пожалуйста написать программу
Для х ( -25 < x < 25) составить функцию, которая вычисляет сумму ряда с заданной точностью eps (0<eps<=1). Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше чем eps. Функция в качестве результата должна вернуть вычисленную сумму, количество учтенных слагаемых и последнее слагаемое, которое было включено в сумму.

В меню предусмотрите выход из программы по требованию пользователя. В алгоритме main() разработайте организацию выбора нужного решения с помощью переключателя switch. Текст функции main() записать в свой файл и включить в проекта Вашего решения.

Короче надо сделать так чтобы пользователь сам выбрал через какой цикл решить. Помогите написать саму функцию подсчёта и вывода, никак не могу понять как же вернуть по ссылке.

Функцию main я вроде написал, не пойму как возвращать по ссылке, сам алгоритм понятен, но с ссылками трабл.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <math.h>
using namespace std;
double calculate_for(const double , const double , double& , int& , double& );
double calculate_while(const double , const double , double& , int& , double& );
double calculate_do_while(const double , const double , double& , int& , double& );
bool repeat (void);
void main (void)
{
        setlocale (LC_ALL, "Rus");
        double x, eps, result, last_summand;
        int numbers_of_summands;
 
        do
        {
            do
            {
                cout << "Введите X (-25<X<25): ";
                cin >> x;
 
                if (x>25 || x<-25)
                    cout << "\n\nX должен быть (-25;25), повторите попытку\n\n";
            }
            while(x>25 || x<-25);
 
            do
            {
                cout << "Введите точность (0<ТОЧНОСТЬ<=1]: ";
                cin >> eps;
 
                if (eps<=0 || eps>1)
                    cout << "\n\nТочность должна быть (0;1], повторите попытку\n\n";
            }
            while(eps<=0 || eps>1);
 
            cout << "\n\nМеню" << "\nДля решения через for нажмите 1" << "\nДля решения через while нажмите 2" << "\nДля решения через do_while нажмите 3" << "\nДля выхода нажмите любую кнопку\n";
            int number;
            cin >> number;
            bool f=true;
            switch (number)
            {
                case 1: calculate_for(x, eps, result, numbers_of_summands, last_summand); break;
                case 2: calculate_while(x, eps, result, numbers_of_summands, last_summand); break;
                case 3: calculate_do_while(x, eps, result, numbers_of_summands, last_summand); break;
                default: f=false;
            }
 
 
        }
        while(repeat());
}
 
bool repeat (void)
{
        char symbol;
 
        cout << "\n\nПовторить? Да/Нет: ";
        cin >> symbol;
 
        if ((char)tolower(symbol)=='y'||'Y'||'д'||'Д')
        return 1;
        else
        return 0;
}
А вот с этим ....

C++
1
2
3
4
5
6
7
8
9
#include <math.h>
double calculate_for(const double , const double , double& , int& , double& )
{
    
    for (i=1;fabs()<e;i++)
    {
 
    }
}
Миниатюры
Сумма ряда с заданной точностью  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2010, 18:20     Сумма ряда с заданной точностью
Посмотрите здесь:

Сумма ряда с заданной точностью C++
Вычислить сумму ряда с заданной точностью C++
Сумма с заданной точностью C++
C++ Сумма ряда с необходимой точностью
Сумма бесконечного ряда с заданной точностью C++
C++ Сумма ряда с определенной точностью
Сумма ряда с точностью 0,001 C++
Сумма ряда с точностью C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MarchZM
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 52
09.10.2010, 15:26  [ТС]     Сумма ряда с заданной точностью #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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <math.h>
using namespace std;
double calculate_for(const double , const double , int& , double& );
double calculate_while(const double , const double , int& , double& );
double calculate_do_while(const double , const double , int& , double& );
bool repeat (void);
void main (void)
{
        setlocale (LC_ALL, "Rus");
        double x, eps, result, summand;
        int numbers_of_summands;
 
        do
        {
            do
            {
                cout << "Введите X (-25<X<25): ";
                cin >> x;
 
                if (x>25 || x<-25)
                    cout << "\n\nX должен быть (-25;25), повторите попытку\n\n";
            }
            while(x>25 || x<-25);
 
            do
            {
                cout << "Введите точность (0<ТОЧНОСТЬ<=1]: ";
                cin >> eps;
 
                if (eps<=0 || eps>1)
                    cout << "\n\nТочность должна быть (0;1], повторите попытку\n\n";
            }
            while(eps<=0 || eps>1);
 
            cout << "\n\nМеню" << "\nДля решения через for нажмите 1" << "\nДля решения через while нажмите 2" << "\nДля решения через do_while нажмите 3" << "\nДля выхода нажмите 0\n";
            int number;
            cin >> number;
            switch (number)
            {
                case 1: calculate_for(x, eps, numbers_of_summands, summand); break;
                case 2: calculate_while(x, eps, numbers_of_summands, summand); break;
                case 3: calculate_do_while(x, eps, numbers_of_summands, summand); break;
                case 0: exit(0);
            }
            if (number=1)
                result=calculate_for(x, eps, numbers_of_summands, summand);
            if (number=2)
                result=calculate_while(x, eps, numbers_of_summands, summand);
            if (number=3)
                result=calculate_do_while(x, eps, numbers_of_summands, summand);
            
            cout << "Сумма ряда: " << result << "\nКоличество слагаемых: " << numbers_of_summands << "\nПоследнее слагаемое: " << summand;
        }
        while(repeat());
}
 
bool repeat (void)
{
        char symbol;
 
        cout << "\n\nПовторить? Да/Нет: ";
        cin >> symbol;
 
        if ((char)tolower(symbol)=='y'||'Y'||'д'||'Д')
        return 1;
        else
        return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <math.h>
double calculate_for(const double x, const double eps, int& numbers_of_summands, double& summand)
{
    numbers_of_summands=1;
    double a=-4*x-x*x;
    double b=2;
    summand=a/b;
    double result=summand;
    for (int i=2;fabs(summand)>eps;i++)
    {
        a+=2*i*x;
        b*=2*i;
        summand=a/b;
        if(i%2!=0);
        else summand*=-1;
                
        result+=summand;
        numbers_of_summands=i;
    }
    return result;
}
Добавлено через 13 часов 49 минут
HELP!!!!

Добавлено через 5 часов 8 минут
Пожалуйста помогите, с ссылками разобрался, а вот с алгоритмом трабл, неправильно решает и всё...
Yandex
Объявления
09.10.2010, 15:26     Сумма ряда с заданной точностью
Ответ Создать тему
Опции темы

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