imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 10.05.2006, 23:07     # 1
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
График функции в C++

Это снова я
У меня вот аткое задание на лабу:
Разработать программу, отражающую на экране изменения функции y=e^(a*t) {экспонента в степени альфа умножить на тэ }во времени через заданный интервал времени t за время оценки Тоц . В процессе отображения функции необходимо проверять вхождение функции в допустимый диапазон Ymin–Ymax , в зависимости от результатов проверки выделять цветом на экране одно из сообщений на табло “Норма”, “Предупреждение”, “Авария”.
Так вот. для начала меня интересует вопрос, как записать функцию эту..
SteFF вне форума  
Старый 10.05.2006, 23:35     # 2
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
#include <math.h>

main(){
float f,a,t;
f=exp(a*t);
}
Kvarx вне форума  
Старый 12.05.2006, 09:52     # 3
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Я немного подругому записал это и он мне почемуто пишет чтото типа: illigal use of pointer..
SteFF вне форума  
Старый 12.05.2006, 14:34     # 4
_Lynx_
Junior Member
 
Регистрация: 11.10.2005
Сообщения: 63

_Lynx_ Путь к славе только начался
Значит посчитал, что это не умножение, а указатель.
То бишь дело в синтаксисе.
_Lynx_ вне форума  
Старый 12.05.2006, 19:19     # 5
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Это-то я понял..
Щас я еще повожусь.. и отпишусь!
SteFF вне форума  
Старый 12.05.2006, 21:00     # 6
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Чето у менч складывается такое впечатление.. что экспонента у меня не возводится в дробную степень..
Степень у меня 0..1 и паходу округляется в сторону 0..
Или я не прав..
Надо еще повозицца..
SteFF вне форума  
Старый 12.05.2006, 22:26     # 7
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Попробовал подругому..
Рисует 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     # 8
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Народ помогите ПЛЗ!!!
SteFF вне форума  
Старый 13.05.2006, 23:54     # 9
Rundll
Junior Member
 
Аватар для Rundll
 
Регистрация: 02.11.2003
Адрес: г. Таганрог
Сообщения: 63

Rundll Путь к славе только начался
Так естественно будет нуль

число е = 2.71828182845905

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

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

Просто компонент Chart не может справится со столь малыми числами и округляет значение y до нуля.
__________________
Америка, Америка - это красиво, но Россия вот где есть СИЛА!!!
Rundll вне форума  
Старый 14.05.2006, 17:02     # 10
SteFF
Junior Member
 
Аватар для SteFF
 
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68

SteFF Путь к славе только начался
Smile Урра :)

Вот что получилось
Вроде работает.

Теперь осталось тока сдать )
Вложения
Тип файла: rar lab2.rar (74.0 Кбайт, 30 просмотров - Кто скачивал? )
SteFF вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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