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

Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? - C++

Восстановить пароль Регистрация
 
visoger
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 17
26.10.2015, 11:37     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #1
ЗАДАЧА:
Вычислить значение суммы бесконечного ряда с заданной точностью (e=10-6): http://www.cyberforum.ru/cgi-bin/latex.cgi?f(x)=1+\frac{{x}^{2}}{2!}+\frac{{x}^{4}}{4!}+...+\frac{{x}^{2n}}{(2n)!}+... , и значение функции (для проверки) http://www.cyberforum.ru/cgi-bin/latex.cgi?chx=\frac{{e}^{x}+{e}^{-x}}{2} , учесть, что 0.1=<x=<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
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
 
int main (void)
{
    setlocale(LC_ALL, "rus");
    int n=0, chx;
    double x, a=1, s=1;
    printf("Ââåäèòå x:\n");
    scanf("%lf", &x);
    while(fabs(a)>1e-6)
    {
        n++;
        a*=(x*x)/(2*n);
        s+=a;
    }
    cosh(x)=((pow(exp,x))+(pow(exp,(-x))))/2;
    printf("chx=%lf\n", chx)
    printf("S=%lf\n", s);
    system("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2015, 11:37     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность?
Посмотрите здесь:

Требуется помощь в решении задачи. C++
C++ Написал тетрис. Прокомментируйте код пожалуйста )
C++ не могли бы вы проверить задачу про двоичные файлы?
Проверить код на правильность C++
C++ Проверить правильность задания №2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
26.10.2015, 11:44     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #2
Цитата Сообщение от visoger Посмотреть сообщение
C++
1
cosh(x)=((pow(exp,x))+(pow(exp,(-x))))/2;
Что вы здесь хотели сделать?
visoger
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 17
26.10.2015, 11:51  [ТС]     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Что вы здесь хотели сделать?
написал эту формулу для проверки: http://www.cyberforum.ru/cgi-bin/latex.cgi?chx=\frac{{e}^{x}+{e}^{-x}}{2}
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
26.10.2015, 11:58     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #4
visoger, ну, во-первых, cosh - библиотечная функция; во-вторых, exp - тоже библиотечная функция; в-третьих, чтобы узнать значение http://www.cyberforum.ru/cgi-bin/latex.cgi?{e}^{x}, достаточно написать exp(x); в -четвертых, так не сравнивают. можно написать так
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 <cmath>
 
double cos_hyp(double x)
{
    double temp = 1, den = 2, res = 0;
    int i = 2;
    while (std::abs(temp) > 1e-6)
    {
        res += temp;
        den = (i - 1) * i;
        temp *= x * x / den;
        i += 2;
    }
    return res;
}
 
double ch( double x)
{
    return (exp(x) + exp(-x)) / 2;
}
 
int main()
{
    double x;
    do std::cin >> x; while (x < 0.1 || x > 1.0);
    std::cout << cos_hyp(x) << '\t' << ch(x) << std::endl;
}
visoger
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 17
26.10.2015, 12:05  [ТС]     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #5
Спасибо Вам конечно, но такой такой код (его форма) очень сложен для меня еще
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
26.10.2015, 12:05     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #6
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
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
 
using namespace std;
 
long int factorial(int x){
    long int s = 1;
    for (int i = 2; i <= x; i++)
        s *= i;
    return s;
}
 
int main (void)
{
    setlocale(LC_ALL, "rus");
    int 
        n = 0,
        k = 0;
    double 
        x, s = 1,
        a = 1;
    cout << "Enter x:  \t\t";
    cin >> x;
    while(fabs(a) > 1e-6)
    {
        n += 2;
        a = pow(x, n)/factorial(n);
        s += a;
        k ++;
    }
    printf("Result:  \t\t%0.6f\n", s);
    printf("Number of iterations:  \t%d\n", k);
    printf("cosh(%0.2f) = \t\t%0.6f\n", x, cosh(x));
 
    system("pause");
    return 0;
}
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
26.10.2015, 12:09     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #7
nuHrBuH, зачем каждый раз считать факториал заново? Можно ведь использовать предыдущее значение и умножать его на недостающие числа.
nuHrBuH
 Аватар для nuHrBuH
248 / 248 / 99
Регистрация: 04.03.2011
Сообщений: 590
26.10.2015, 12:10     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #8
Согласен =)
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
26.10.2015, 12:20     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
visoger, только не забывайте, что при использовании setlocale при вводе и выводе разделителем дробной и целой частей является не точка, а запятая
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
#include <iostream>
#include <cmath>
 
using namespace std; // эту строку можно убрать, но тогда вместо abs нужно будет использовать fabs
 
int main()
{
    setlocale(LC_ALL, "rus");
    double x, temp = 1, den, cos_hyp = 0, ch;
    int i = 2;
    printf("Введите x: ");
    scanf("%lf", &x);
    ch = (exp(x) + exp(-x)) / 2;
    while (abs(temp) > 1e-6)
    {
        cos_hyp += temp;
        den = (i - 1) * i;
        temp *= x * x / den;
        i += 2;
    }
    printf("%f\t%f\n", cos_hyp, ch);
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 12:37     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность?
Еще ссылки по теме:

C++ решении задачи (по Липпману)
Проверить код на правильность C++
Не могли бы вы проверить правильность построения блок схемы? C++

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

Или воспользуйтесь поиском по форуму:
visoger
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 17
26.10.2015, 12:37  [ТС]     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность? #10
Спасибо Вам!
Yandex
Объявления
26.10.2015, 12:37     Посодействуйте в решении задачи пожалуйста! Вроде бы написал, но не могли бы вы проверить правильность?
Ответ Создать тему
Опции темы

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