Велес |
Отправлено: 21.11.2003, 12:37 |
|

Ученик-кочегар
Группа: Участник
Сообщений: 18

|
Добрый день.
Помогите пожалуйста отыскать ошибку в нижеследующем коде:
Данный код расположен в форме Main, в нём используются данные (в том числе одномерный массив из формы Form1). C1 — массив формата long double, все остальные переменные кроме k тоже long double.
long double Sum = C1[0];
int w = Form1->k;
for(int z = 1; z < w; z ++)
{
C1[z] = ((-6 * me * pow (c, 2))*(Form1->alfa[Form1->k])*alfgts)/(((Form1->alfa[Form1->k])/(Form1->ksia[Form1->k]))+(alfgts/ksigts));
Sum += C1[z];
}
RichEdit1->Lines->Insert(0, "" + FloatToStr(Sum));
При запуске приложения. Если работать с пустым массивом (данные не были внесены), то в RichEdit1 выводятся нули. Если же в массив были внесены данные (внесение данные производится в Form1), то при попытке вывести значение Sum в RichEdit1 формы Main выпрыгивает "Invalid floating point operation".
Может со стороны будет лучше видно, где ошибка.
Заранее благодарен.
Отредактировано Велес — 21/11/2003, 13:41 |
 |
Nick |
Отправлено: 21.11.2003, 15:44 |
|

Машинист паровоза
Группа: Участник
Сообщений: 247

|
Возможно деление на 0 |
 |
Admin |
Отправлено: 22.11.2003, 18:01 |
|

Владимир
Группа: Администратор
Сообщений: 1190

|
А вообще для поиска подобных ошибок поставьте в нужных
местах breakpoint — точки прерывания и смотрите значения
переменных в формуле, наведя курсор мыши на переменную в коде.
Установив неправильное значение выясните — откуда
оно взялось.
Другой часто испольуемый способ -
перед расчетом формулы(строки), которая вызыввает ошибку
CODE |
C1[z] = ((-6 * me * pow (c, 2))*(Form1->alfa[Form1->k])*alfgts)/(((Form1-
>alfa[Form1->k])/(Form1->ksia[Form1->k]))+(alfgts/ksigts));
|
выводите значения переменных, и увидите какое из них ошибочное:
CODE |
ShowMessage("ksigts = "+FloatToStr(ksigts));
ShowMessage("alfgts = "+FloatToStr((alfgts));
ShowMessage("Form1->k = "+IntToStr(Form1->k));
...
C1[z] = ((-6 * me * pow (c, 2))*(Form1->alfa[Form1->k])*alfgts)/(((Form1-
>alfa[Form1->k])/(Form1->ksia[Form1->k]))+(alfgts/ksigts));
|
Отредактировано Admin — 22/11/2003, 19:09
|
 |
|