13.01.2015, 16:36 | #1 (permalink) |
Новичок
Регистрация: 12.01.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
C++ Builder 6
Пытался сам сделать, вроде неверно. При оюбом отрицательном щначении выдает 0. Посмотрите, пожалуйста, и помогите исправить. Есть ли другие ошибки? Артктангенс я позже рассмотрю На форму добавил кнопку, лэйбл, ЛэйбледЭдит Код:
#include <vcl.h> #include <math.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { double sum = 0, x, eps = 0.000001, temp; int i = 1, n = 1; double z = pow(-1, n), v = pow(x, 2 * n - 1)/(2 *n -1); String res = "fabs(x) > 1"; x = StrToFloatDef(LabeledEdit1->Text, 0); if (fabs(x) <= 1) { temp = x; while (temp >= eps) { sum += temp; i++; if (i == 2) { n = 2; temp = x*x/2; } else { n += i; temp = z * v; } } res = sum; } Label1->Caption = res; } //--------------------------------------------------------------------------- |
13.01.2015, 16:36 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я думаю, что решение проблемы можно поискать в аналогичных топиках Помогите решить пример в С++ Builder C++ Builder графика Не работает C++ Builder Задача на массивы Builder C++ HEX в algorithm builder Помогите-не идет программа в C++Builder 6. |
13.01.2015, 17:12 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
К сожалению, на СИ не программирую, но то, что написана ахинея - вижу. Откуда Вы взяли переменную i? Зачем она? Уберите! Всё, что Вам нужно - это сделать цикл, в котором n будет возрастать на 1, при каждом значении n сосчитать z и v, потом temp=z*v и, наконец, sum=sum+temp. Завершить при |temp|<eps. Всё! И зачем рассматривать отдельно случай n=2? Не понимаю. Тем более, что при n=2 temp=x*x*x/3, а вовсе не x*x/2.
|
13.01.2015, 17:21 | #3 (permalink) |
Новичок
Регистрация: 12.01.2015
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо, попробую
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|