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

Подскажите правильно ли сделана программа? - C++

Восстановить пароль Регистрация
 
Людмила1990
0 / 0 / 0
Регистрация: 18.09.2012
Сообщений: 10
20.10.2012, 22:33     Подскажите правильно ли сделана программа? #1
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда
Тейлора, на интервале от xнач. до xкон. с шагом dx и с точностью e.

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
#include <iostream> // содержит классы cin, cout;
#include <iomanip> // содержит функцию setw
#include <cmath>
 
using namespace std;  
 
 
int main () 
    {
    setlocale (LC_ALL, "rus"); // это чтобы отображался русский шрифт
    const int max = 500; // максимальное число интераций
    double Xstart,Xend,dX,sum,e,element,P;
    int c;
    bool done ; // признак точности 
    cout <<"Введите Хнач=";
    cin >> Xstart;
    cout << "Введите Хкон=";
    cin>>Xend;
    cout << "Введите Xd=";
    cin>>dX;
    cout << "точность e=";
    cin>>e;
    cout <<"       Таблица значений          "<< endl; 
    cout <<"---------------------------------"<< endl;
    cout <<"  X  | значение функции  |  кол. "<< endl;
    cout <<"---------------------------------"<< endl;
    for (double x=Xstart; x<=Xend; x+=dX) // цикл перебирает все х в интервале Xнач до Xкон c шагом dX
        {
        c = 1; done = true; element = x; sum = element;
        for (int n=0; fabs(element)>e; n++) // цикл вычисления ряда
            {
            element*=(pow(x,(2*n+1)))/(((2*n)-1));   // вычисляем очередной член ряда 
            sum+=element;          // складываем 
            c=c+1;                   // число итераций
            if (n>max)             // число может никогда не превзойти е, следует будет зацикливание, для этого наложим ограничения
                {
                cout << setw (5)<< x << "|" << setw (19)<< "Ряд расходится" << "|" << endl;
                done = false; break; // break служит для предворительного выхода из цикла!
                }
            }
        if (done) // если done = true то выполняется иначе пропускается
            {
            cout << setw (5)<< x << "|" << setw (19)<<  2*sum << "|" << setw (2)<< c << endl; // выводим значения в табличном ввиде
            }
        
        }
     cout <<"---------------------------------"<< endl;
    return 0;
    }
Миниатюры
Подскажите правильно ли сделана программа?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 22:33     Подскажите правильно ли сделана программа?
Посмотрите здесь:

есть график, проверьте правильно ли программа? и подскажите как задать в программе интервал? C++
C++ программа сделана через указатели, переделать через ссылки.
правильно ли сделана программа C++
C++ Правильно сделана перегруженная операция присваивания?
C++ Подскажите как правильно сделать
C++ Не могу понять правильно ли сделана?
Программа правильно сохраняет, но не правильно считывает матрицу из файла C++
C++ Правильно ли сделана программа есть ли ошибки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.10.2012, 02:59     Подскажите правильно ли сделана программа? #2
не соответствует формула в миниатюре и в коде программы...

Добавлено через 30 минут
по моему надо было написать вот так
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
#include <iostream> // содержит классы cin, cout;
#include <iomanip> // содержит функцию setw
#include <cmath>
 
using namespace std; 
 
 
int main () 
{
    setlocale (LC_ALL, "rus"); // это чтобы отображался русский шрифт
    const int max = 500; // максимальное число интераций
    double Xstart, Xend, dX, e;
    int c;
    cout <<"Введите Хнач = ";
    cin >> Xstart;
    cout << "Введите Хкон = ";
    cin>>Xend;
    cout << "Введите dX = ";
    cin>>dX;
    cout << "точность e = ";
    cin>>e;
    cout <<" Таблица значений "<< endl; 
    cout <<"---------------------------------"<< endl;
    cout <<"\t| значение функции | кол. "<< endl;
    cout <<"---------------------------------"<< endl;
    for (double x = Xstart; x <= Xend; x += dX) // цикл перебирает все х в интервале Xнач до Xкон c шагом dX
    {
        c = 1;
        double element = 1 / x, sum = element;
        for (int n = 1; fabs(element) > e && n < max; n++) // цикл вычисления ряда
        {
            element = 1 / pow(x, 2 * n + 1) / (2 * n + 1); // вычисляем очередной член ряда 
            sum += element; // складываем 
            ++c; // число итераций
        }
        sum *= 2;
        if (fabs(element) > e) // если done = true то выполняется иначе пропускается
        {
            cout << "x = " << x << "\t|" << setw (18)<< "Ряд расходится" << "|" << endl;
        }
        else
        {
            cout << "x = " << x << "\t|" << setw (17)<< sum << " |" << setw (2)<< c << endl; // выводим значения в табличном ввиде
        }
        double value = log((x + 1) / (x - 1));
        cout << "значение|" << setw (17) << value << " |" << setw (2)<< c << endl; // выводим значение посчитанное по формуле
        cout << "разница |" << setw (17)<< fabs(value - sum) << " |" << setw (2)<< c << endl; // выводим значение посчитанное по формуле
        cout << "\t|                  |\n";
 
    }
    cout <<"---------------------------------"<< endl;
    return 0;
}
Yandex
Объявления
21.10.2012, 02:59     Подскажите правильно ли сделана программа?
Ответ Создать тему
Опции темы

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