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

Задача - C++

Восстановить пароль Регистрация
 
Jurlique
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 46
13.11.2013, 23:56     Задача #1
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
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
 
float scor(int n, float x);
 
int main()
{
    setlocale(0, "Russian");
    const int max = 500;
    float Xstart, Xend, dX, sum, e, element;
    int c;
    cout << "Введите Xнач, Хкон, Xd, точность e" << endl;
    cin >> Xstart >> Xend >> dX >> e;
    cout << "       Таблица значений          " << endl;
    cout << "---------------------------------" << endl;
    cout << "  X  | значение функции  |  кол. " << endl;
    for (float x = Xstart; (Xend - x) > -0.00001; x += dX)
    {
        c = 1; element = sum = 1;
        for (int n = 0; fabs(element) > e && n <= max; n++)
        {
            element *= scor(n, x);
            sum += element;
            c++;
        }
        if ((c < max)) cout << setw(5) << x << "|" << setw(19) << sum << "|" << setw(5) << c << "|" << setw(10) << cos(x) << endl;
        else cout << setw(5) << x << "|" << setw(19) << "Ряд расходится" << "|" << setw(5) << "|" << endl;
    }
    system("PAUSE");
    return 0;   
}
 
 
float scor(int n, float x)
{
    float t;
    t = -(x*x) / ((2 * n + 1)*(2 * n + 2));
    return t;
}
Мой результат:

Введите Xнач, Хкон, Xd, точность e
1.5 2.4 0.1 0.0001

Таблица значений
---------------------------------
X | значение функции | кол.
1.5| 0.0707369| 6| 0.0707372
1.6| -0.0292002| 6|-0.0291995
1.7| -0.128846| 6| -0.128845
1.8| -0.227205| 6| -0.227202
1.9| -0.32329| 7| -0.32329
2| -0.416147| 7| -0.416147
2.1| -0.504846| 7| -0.504846
2.2| -0.5885| 7| -0.588501
2.3| -0.666274| 7| -0.666276
2.4| -0.737391| 7| -0.737393
Для продолжения нажмите любую клавишу . . .

А правильно так, в чем моя ошибка?

Ввод: начало и конец интервала, шаг и точность
Вывод: таблица, каждая строка которой есть комбинация из четырех чисел – значение аргумента, значение функции, количество просуммированных членов ряда и расчет функции стандартными средствами с++
Пример входных данных:
1.5 2.4 0.1 0.0001
Пример выходных данных:
1.5 0.0707 5 0.0707
1.6 -0.0292 5 -0.0292
1.7 -0.1288 5 -0.1288
1.8 -0.2272 5 -0.2272
1.9 -0.3233 6 -0.3233
2.0 -0.4161 6 -0.4161
2.1 -0.5048 6 -0.5048
2.2 -0.5885 6 -0.5885
2.3 -0.6663 6 -0.6663
2.4 -0.7374 6 -0.7374
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rowest
 Аватар для rowest
7 / 7 / 0
Регистрация: 17.06.2013
Сообщений: 34
14.11.2013, 01:56     Задача #2
Jurlique, может быть такой вид требуется? (в виде "таблицы")
C++ (Qt)
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
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
 
float scor(int n, float x);
 
int main()
{
    setlocale(0, "Russian");
    const int max = 500;
    float Xstart, Xend, dX, sum, e, element;
    int c;
    cout << "Введите Xнач, Хкон, Xd, точность e" << endl;
    cin >> Xstart >> Xend >> dX >> e;
    cout << "       Таблица значений          " << endl;
    cout << "-----------------------------------------------" << endl;
    cout << "  X  \t| значение функции  \t|  кол. " << endl;
    cout << "-----------------------------------------------" << endl;
    for (float x = Xstart; (Xend - x) > -0.00001; x += dX)
    {
        c = 0; element = sum = 1;
        for (int n = 0; fabs(element) > e && n <= max; n++)
        {
            element *= scor(n, x);
            sum += element;
            c++;
        }
        if ((c < max)) cout << setw(5) << x << "\t|" << setw(19) << sum << "\t|" << setw(5) << c << "\t|" << setw(10) << cos(x) << endl;
        else cout << setw(5) << x << "\t|" << setw(19) << "Ряд расходится" << "\t|" << setw(5) << "\t|" << endl;
    }
    system("PAUSE");
    return 0;   
}
 
 
float scor(int n, float x)
{
    float t;
    t = -(x*x) / ((2 * n + 1)*(2 * n + 2));
    return t;
}
Ну и с = 0 скорее всего в цикле
Jurlique
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 46
14.11.2013, 02:06  [ТС]     Задача #3
rowest, да, так лучше спасибо, но для идеала, надо сделать
"Значение функции" и "Кол." до 10.000
0.0707369| 6| 0.0707372 и 0.0707 5 0.0707
как это можно сделать?
rowest
 Аватар для rowest
7 / 7 / 0
Регистрация: 17.06.2013
Сообщений: 34
14.11.2013, 02:18     Задача #4
Цитата Сообщение от Jurlique Посмотреть сообщение
rowest, да, так лучше спасибо, но для идеала, надо сделать
"Значение функции" и "Кол." до 10.000
0.0707369| 6| 0.0707372 и 0.0707 5 0.0707
как это можно сделать?
С помощью
C
1
setprecision(3)
где 3 - число знаков после запятой. Вы должны написать вместо
C
1
cout << setw(5) << x << "\t|" << setw(19) << sum << "\t|" << setw(5) << c << "\t|" << setw(10) << cos(x) << endl;
написать так:
C
1
cout << setw(5) << setprecision(3) << x << "\t|" << setw(19) << setprecision(3) << sum << "\t|" << setw(5) << setprecision(3) << c << "\t|" << setw(10) << setprecision(3) << cos(x) << endl;
Добавлено через 2 минуты
Или же можно использовать
C++
1
printf("%5.3f", x)
где х - переменная для вывода на экран, а "%5.3f" означает, что тип переменной float и формат вывода 3 знака после запятой
Jurlique
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 46
14.11.2013, 02:29  [ТС]     Задача #5
rowest, Спасибо
rowest
 Аватар для rowest
7 / 7 / 0
Регистрация: 17.06.2013
Сообщений: 34
14.11.2013, 02:31     Задача #6
Jurlique, на здоровье (для спасибок кнопка есть отдельная)
Yandex
Объявления
14.11.2013, 02:31     Задача
Ответ Создать тему
Опции темы

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