Pow domain error c builder



Pow domain error c builder

» title=»>» width=»8″ height=»8″/> возведение числа в дробную степень

Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.9.2005

Репутация: нет
Всего: нет

Как ловить ошибку в C++Builder 5 при возведении отрицательного числа в степень 0,5 например?

такой try-блок поймать ее не может:

Андракула
Дата 16.1.2007, 15:48 (ссылка) | (нет голосов) Загрузка .
Код
double f, a, b;
.
try<
f = pow(a,b);
>
catch(. )

а функцию Power(double a, double) (которая вроде должна работать) не находит компайлер!

такой вариант тоже на проходит:

Код
double f, a, b;
.
try<
struct _exception err;
f = pow(a,b);
_matherr(&err);
if (err.type == DOMAIN)
ShowMessage(«. «);
>
>
catch(. )

Как быть?
Заранее всем спасибо!

segmentation_fault
Дата 16.1.2007, 16:03 (ссылка) | (нет голосов) Загрузка .

Шустрый

Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1

Цитата(Андракула @ 16.1.2007, 15:48 )
а функцию Power(double a, double) (которая вроде должна работать) не находит компайлер!

А ты Math.h подключил?

Эксперт

Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59

Vyacheslav
Дата 16.1.2007, 16:15 (ссылка) | (нет голосов) Загрузка .
Цитата(Андракула @ 16.1.2007, 15:48 )
такой try-блок поймать ее не может:
Цитата(C++Builder Help)
Return Value

On success, pow and powl return the value calculated of x to the power of y.

Sometimes the arguments passed to these functions produce results that overflow or are incalculable. When the correct value would overflow, the functions return the value HUGE_VAL (pow) or _LHUGE_VAL (powl). Results of excessively large magnitude can cause the global variable errno to be set to

ERANGE Result out of range

If the argument x passed to pow or powl is real and less than 0, and y is not a whole number, or if x is 0 and y is less than 0, or you call pow(0,0), the global variable errno is set to

EDOM Domain error
Error handling for these functions can be modified through the functions _matherr and _matherrl.

Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.9.2005

Репутация: нет
Всего: нет

про Хелп я что то не понял, я же пытался ее с _matherr поямать, но не получилось

Андракула
Дата 16.1.2007, 16:26 (ссылка) | (нет голосов) Загрузка .
stmamont
Дата 16.1.2007, 16:28 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 343
Регистрация: 13.3.2004
Где: влг

Репутация: 3
Всего: 3

Подключать надо Math.hpp для работы с Power по-моему

Это сообщение отредактировал(а) stmamont — 16.1.2007, 16:31

Эксперт

Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59

Vyacheslav
Дата 16.1.2007, 16:29 (ссылка) | (нет голосов) Загрузка .
Код
#include
#include
#include

#pragma argsused
int main(int argc, char* argv[])
<
double f = pow(-100,0.5);

if (errno == EDOM)
std::cout

Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.9.2005

Репутация: нет
Всего: нет

Да с #include все работает!

Андракула
Дата 16.1.2007, 16:33 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59

Vyacheslav
Дата 16.1.2007, 16:51 (ссылка) | (нет голосов) Загрузка .
Цитата(Андракула @ 16.1.2007, 16:26 )
про Хелп я что то не понял, я же пытался ее с _matherr поямать, но не получилось
Код
#include
#include
#include
#include
#include

int _matherr (struct _exception *a)
<
throw std::domain_error(«pow: DOMEN error»);
return 0;
>

#pragma argsused
int main(int argc, char* argv[])
<
try <
double f = pow(-100,0.5);
>
catch(std::exception& exp)
<
std::cout

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) — крупнейший в рунете сборник материалов по Дельфи
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »

[ Время генерации скрипта: 0.1173 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Читайте также:  Fatal error call to undefined function main in
Оцените статью
toolgir.ru
Adblock
detector