IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   График функции в C++ (https://www.imho.ws/showthread.php?t=103541)

SteFF 10.05.2006 23:07

График функции в C++
 
Это снова я :)
У меня вот аткое задание на лабу:
Разработать программу, отражающую на экране изменения функции y=e^(a*t) {экспонента в степени альфа умножить на тэ ;) }во времени через заданный интервал времени t за время оценки Тоц . В процессе отображения функции необходимо проверять вхождение функции в допустимый диапазон Ymin–Ymax , в зависимости от результатов проверки выделять цветом на экране одно из сообщений на табло “Норма”, “Предупреждение”, “Авария”.
Так вот. для начала меня интересует вопрос, как записать функцию эту..
:idontnow:

Kvarx 10.05.2006 23:35

#include <math.h>

main(){
float f,a,t;
f=exp(a*t);
}

SteFF 12.05.2006 09:52

Я немного подругому записал это и он мне почемуто пишет чтото типа: illigal use of pointer.. :confused:

_Lynx_ 12.05.2006 14:34

Значит посчитал, что это не умножение, а указатель.
То бишь дело в синтаксисе.

SteFF 12.05.2006 19:19

Это-то я понял..
Щас я еще повожусь.. и отпишусь! ;)

SteFF 12.05.2006 21:00

Чето у менч складывается такое впечатление.. что экспонента у меня не возводится в дробную степень.. :(
Степень у меня 0..1 и паходу округляется в сторону 0..
Или я не прав.. :confused:
Надо еще повозицца..

SteFF 12.05.2006 22:26

Попробовал подругому..
Рисует 0.....
НИдоганю никак. Помогите!..
:молись:
Код:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 TForm1 *Form1;
 float min,max,a,y,t,stepen;
 int x;
 float e=exp(1);          //e - экспонента...
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //Забиваем значения..
  min=StrToFloat(Edit3->Text);
  max=StrToFloat(Edit4->Text);
  t=StrToInt(Edit1->Text);                      //
  a=StrToFloat(Edit5->Text);                    //коэффициент...

  //Устанавливаем временные параметры..
  InTr->Interval=(StrToInt(Edit1->Text));      //интревал t
  OcTr->Interval=(StrToInt(Edit2->Text)*1000);  //Оценочное время

  //Включаем таймеры...
  InTr->Enabled=true;                          //активируем таймер
  OcTr->Enabled=true;                          //активируем таймер

  //Обенуляем и очищаем... ;)
  Form1->Chart1->Series[0]->Clear();
  x=y=0;
 
  //И еще.. по мелочи..
  Panel1->Caption="НОРМА";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OcTrTimer(TObject *Sender)
{
  //Когда кончится оценочное время - останавливаемся...
  InTr->Enabled=false;
  OcTr->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::InTrTimer(TObject *Sender)
{
  //Вот что будет происходить через заданный интервал времени t
  stepen=-(a*t);
  y=exp(stepen);    //возводим ее в степень
  x++;

  //рисуем... 
  Form1->Chart1->Series[0]->AddXY(x,y,clRed);
}
//--------------------------------------------------------------------------


SteFF 13.05.2006 19:58

Народ помогите ПЛЗ!!!
:молись:

Rundll 13.05.2006 23:54

Так естественно будет нуль :)

число е = 2.71828182845905

допусти значение stepen = -20

т.е. y станет равным 2.0611....e-9

Просто компонент Chart не может справится со столь малыми числами и округляет значение y до нуля.

SteFF 14.05.2006 17:02

Урра :)
 
Вложений: 1
Вот что получилось :)
Вроде работает. :молись:
:beer:
Теперь осталось тока сдать :))


Часовой пояс GMT +4, время: 02:59.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.