|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.11.2015, 23:18 | #1 |
Новичок
Джуниор
Регистрация: 06.11.2015
Сообщений: 2
|
Помогите исправить
Такое задание:
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; n=80 Проблема в том, что если "n" < 15 - всё вроде бы работает, при большом "n" ошибка в делении на "0" при расчёте суммы. Может кто укажет на ошибку вот текст: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <math.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Memo1->Clear(); Memo1->Lines->Add("Лабораторная работа №3"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { double a,b,x,h,s,y,m; int n,zn=-1,k,f,i; a=StrToFloat (Edit1->Text); b=StrToFloat (Edit2->Text); n=StrToInt (Edit3->Text); h=StrToFloat (Edit4->Text); for (x=a;x<=b;x+=h){ y=cos(x); for (k=s=1;k<=n;k++){ for(i=f=1;i<=2*k;i++) f*=i; s+=pow(zn,k)*pow(x,(2*k))/f; m=fabs(y-s); } Memo1->Lines->Add(" при x= "+FloatToStrF(x,ffFixed,8,2)+" сумма= " +FloatToStrF(s,ffFixed,8,5)+" y= "+FloatToStrF(y,ffFixed,8,5) +" |Y(x)-S(x)|= "+FloatToStrF(m,ffFixed,8,5)); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Memo1->Clear(); } //------------------------------------------------- |
07.11.2015, 09:57 | #2 |
Новичок
Джуниор
Регистрация: 06.11.2015
Сообщений: 2
|
Разобрался
Спасибо, вопрос закрыт, сам разобрался. Всего лишь надо было задекларировать факториал через double, а не int на больших n
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите исправить. | Smile189 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 02.10.2016 21:46 |
Помогите исправить.... | BROOKS | Фриланс | 7 | 25.11.2009 15:00 |
помогите исправить | _llllllllll_ | Общие вопросы C/C++ | 3 | 21.09.2009 09:22 |
Помогите исправить | NeiL | Общие вопросы C/C++ | 1 | 31.05.2008 13:31 |