Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2015, 21:31   #1
sasha19111993
Новичок
Джуниор
 
Регистрация: 30.11.2015
Сообщений: 1
Печаль Вычисление интегралов

Помогите пожалуйста разобраться:

Пишу программу вычисления интегралов двумя методами (методы прямоугольников и трапеций). Решила сделать так, чтобы при нажатии на кнопку сразу вычислялись оба результата, но по методу трапеций результат не правильный(и ни как не зависит ни от вводимых данных, ни от самой формулы y1,y2) Сделала тот же цикл,но через отдельную кнопку,Всё Правильно! в итоге на первую кнопку добавила ещё одну строку( s1=0; ), и вроде заработало, только результаты всё равно немного отличаются.
Теперь ломаю себе голову, почему для одной кнопки нужно переменную к 0 приравнивать, а для второй нет? И почему всё таки при одинаковой программе результаты разные?
Текст работающей программы:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n;
float a,b,x,x1,y,y1,y2,d,s,s1;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
if(a<b)
{
n=10000;
d=(b-a)/n;
 s1=0;
x1=a;
x=a+d/2;
while(x<b)
{
x=x+d;
y=pow(x,2)+5;
s=s+y*d;

y1=pow(x1,2)+5;
y2=pow(x1+d,2)+5;
s1=s1+(y1+y2)*d/2;
x1=x1+d;
}

Label2->Caption="Интеграл="+FloatToStr(s1);
Label1->Caption="Интеграл="+FloatToStr(s);
}
if(a>=b)
{
Label2->Caption="/b/должно быть больше/a/";
Label1->Caption="/b/должно быть больше/a/";
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 int n; float a,b,x1,y1,y2,d,s1;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
if(a<b)
{
n=10000;
d=(b-a)/n;
x1=a;


 while(x1<b)
{
y1=pow(x1,2)+5;
y2=pow(x1+d,2)+5;
s1=s1+(y1+y2)*d/2;
x1=x1+d;
}

Label3->Caption="Интеграл="+FloatToStr(s1);
}
if(a>=b)
{
Label3->Caption="/b/должно быть больше/a/";
}
}
Изображения
Тип файла: jpg 13.jpg (45.4 Кб, 140 просмотров)

Последний раз редактировалось sasha19111993; 30.11.2015 в 21:53.
sasha19111993 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление интегралов Golovastik Общие вопросы C/C++ 17 25.12.2013 00:05
Вычисление интегралов методом трапеций irsen22 Паскаль, Turbo Pascal, PascalABC.NET 4 15.05.2013 00:36
вычисление интегралов nimbus2000 Помощь студентам 5 11.02.2012 13:45
Приближенное вычисление определенных интегралов Аделина19 Паскаль, Turbo Pascal, PascalABC.NET 0 03.11.2011 04:47
Вывести результат (Вычисление интегралов) prikolist Общие вопросы C/C++ 13 11.02.2010 14:17