|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2010, 16:10 | #1 |
Новичок
Джуниор
Регистрация: 07.10.2010
Сообщений: 2
|
Сумма ряда с заданной точностью
Помогите пожалуйста программа неправильно считает, не могу найти закономерность
#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; } #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; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нахождения суммы ряда с заданной точностью E | pinch000 | Общие вопросы C/C++ | 1 | 06.11.2009 13:03 |
найти бесконечную сумму ряда с заданной точностью | логарифм | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.07.2009 07:17 |
Сумма бесконечного ряда с точностью Паскаль | Кириллович | Помощь студентам | 9 | 30.05.2009 13:36 |
Найти сумму ряда с точностью e, если дан общий член этого ряда | JiLiYa | Общие вопросы C/C++ | 2 | 18.02.2009 11:11 |