Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

непонятный Глюк с FloatToStr, FloatToStrF

3.3K
06 октября 2010 года
eugrita
24 / / 26.02.2006
непонятный Глюк с FloatToStr, FloatToStrF. В нижеприведенном коде
валится в функции Output на 1 операторе s=FloatToStrF(-2,ffNumber,6,3);
Что может быть причиной ошибки??
Для диагностики ошибки я
1)устранил все динамически размещаемые массивы с целью исключения возможности выхода за границы
2)вставил несколько экз оператора s=FloatToStrF(-2,ffNumber,6,3);
в ранних местах проходит - валится только в указанном с диагностикой
exeption class EInvalidOp Invalid Floating point operation
----------------------------------------------------------
TForm1 *Form1;
int ia;//режим расчета ia=0 - по вар, ia=1 - по уч-кам
int N; //кол точек разбиения
float h;//шаг
float l;//длина
int nu;//кол уч-ков ступенч стержня
int S,G;//N группы, N студ
float C;
//float *a, *b,*c, *F; //
float a[100], b[100],c[100], F[100]; //
float * L, *I,*ML, *MR;//L -длина уч-ков, I - мом инерции, ML,MR - моменты нагрузки на левом и прав концах
AnsiString s;
void __fastcall TForm1::FormActivate(TObject *Sender)
{
N=cse->Value; sgY->ColCount=N+1;
//crt();
sgY->Cells[0][0]="Yi"; sy->Cells[0][0]="L="; sy->Cells[0][1]="I=";
sy->Cells[0][2]="Mлев="; sy->Cells[0][3]="Mпр=";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cseChange(TObject *Sender)
{
N=cse->Value; sgY->ColCount=N+1;
sgM->RowCount=N; sgM->ColCount=N;
// del(); crt();
s=FloatToStrF(-2,ffNumber,6,3);
}

void __fastcall TForm1::csyChange(TObject *Sender)
{//изм-е кол-ва уч-ков
nu=csy->Value; sy->ColCount=nu+1;
delY(); crtY();
}
TForm1::crtY()
{ L=new float [nu]; I=new float [nu]; ML=new float [nu]; MR=new float [nu];}
TForm1::delY()
{ delete []L; delete []I; delete []ML; delete []MR;}

int TForm1::inp()
{//ввод и проверка в режиме задания уч-ков
l=0;
for (int i=1;i<nu;i++) {
if (!TryStrToFloat(sy->Cells[0],L[i-1]))
{ s="Неверен L["+IntToStr(i)+"]"; ShowMessage(s); return -1; }
if (!TryStrToFloat(sy->Cells[1],I[i-1]))
{ s="Неверен I["+IntToStr(i)+"]"; ShowMessage(s); return -1; }
if (!TryStrToFloat(sy->Cells[1],ML[i-1]))
{ s="Неверен Mл["+IntToStr(i)+"]"; ShowMessage(s); return -1; }
if (!TryStrToFloat(sy->Cells[1],MR[i-1]))
{ s="Неверен Mпр["+IntToStr(i)+"]"; ShowMessage(s); return -1; }
l+=L;
}
}
void __fastcall TForm1::cssChange(TObject *Sender)
{//
S=css->Value; C=0.04*(G+S);
lc->Caption=FloatToStrF(C,ffNumber,5,2);
}
void __fastcall TForm1::csgChange(TObject *Sender)
{
G=csg->Value;
C=0.04*(G+S);
lc->Caption=FloatToStrF(C,ffNumber,5,2);
}

void __fastcall TForm1::bOKClick(TObject *Sender)
{ s=FloatToStrF(-2,ffNumber,6,3);
if (ia==0) l=1;
else if (inp()==-1) return;
h=l/N;
sgM->Cells[0][0]="1";
s=FloatToStrF(-2,ffNumber,6,3);
//генерирование векторов прогонки
// for (int i=0;i<N;i++)
// {a=1; c=1; }
// a[0]=0; c[N-1]=0;
if (ia==0) BFvar();
else BFuch();
Output();
}

float TForm1::BFvar()
{//
float p,f,x;
for (int i=0;i<N;i++)
{
x=i*h;p=-S/(l*l+4*x*(l-x));
// b=-2+h*h*p;
// f=-C*(2-p*x*(l-x)); F=h*h*f;
}
}
TForm1::BFuch()
{ //генерирование диаг вектора b и прав частей F для задания по уч-кам

}
TForm1::Output()
{ // вывод в интервейс матрицы прогонки
s=FloatToStrF(-2,ffNumber,6,3);
for (int i=0;i<N;i++) {
sgM->Cells=b;//FloatToStrF(b,ffNumber,6,3);
if (i<N-1) sgM->Cells[i+1]="-1";
if (i<N-1) sgM->Cells[i+1]="-1";
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог