ozx |
Отправлено: 19.04.2005, 22:36 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Люди помогите пожалуйсто.
Есть такой код:
CODE |
Q = b-L1*sin(FI);
P = a-L1*cos(FI);
F = (P*P+Q*Q+L2*L2-L3*L3)/(2*L2);
PSI = 2*atan((Q+sborka*sqrt(Q*Q+P*P-F*F))/(P+F));
KSI = acos((L2*cos(PSI)+L1*cos(FI)-a)/(L3));
|
Если выражение под корнем <0
то возникает ошибка программы с текстом:
SQRT: DOMAIN error,
а затем
ACOS: DOMAIN error.
Как можно подавить эти сообщения. Необходимо, что бы программа не обращала внимание на эти ошибки. |
|
Георгий |
Отправлено: 19.04.2005, 23:25 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
пара try catch не помогает? |
|
FataLL |
Отправлено: 20.04.2005, 02:53 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Блин, а просто
CODE |
double dNum = ...
if( dNum >= 0.0 )
{
sqrt...
}
|
не канает? Дожили...
Отредактировано FataLL — 20/04/2005, 02:53
|
|
ozx |
Отправлено: 20.04.2005, 09:51 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
пробовал
CODE |
try
{
sqrt...
}
catch(...)
{
}
|
Но все равно, ошибки возникают. Может я что-то ни то делаю.
А по-поводу второго варианта, это второе что мне пришло в голову, после try catch, Но я хочу понять, почему, ошибки не подавляются.
Возможно это из-за того что в блоке try я разместил много формул. Хотя я сомневаюсь. |
|
FataLL |
Отправлено: 21.04.2005, 11:40 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Копни здесь попробуй:
CODE |
#include <math.h>
#include <string.h>
#include <stdio.h>
int _matherr (struct _exception *a)
{
if (a->type == DOMAIN)
if (!strcmp(a->name,"sqrt")) {
a->retval = sqrt (-(a->arg1));
return 1;
}
return 0;
}
int main(void)
{
double x = -2.0, y;
y = sqrt(x);
printf("_Matherr corrected value: %lf\n",y);
return 0;
}
|
Все верно. try catch обрабатывает только функции Math.hpp, а там корня нет. Ты используешь sqrt, а его ошибка ловится _matherr. Там еще длинная версия есть, если чё...
Отредактировано FataLL — 21/04/2005, 11:51
|
|
ozx |
Отправлено: 22.04.2005, 22:13 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Огромное спасибо FataLL. Ты мне очень помог.
Всё вроде как работает |
|