Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - acos: DOMAIN ERROR

Ответить
Настройки темы
C/C++ - acos: DOMAIN ERROR

Аватара для 0_5Mandarinki

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем здравствуйте!

В моей программе (borland c++) u находится следующим образом:

x = StrToFloat(Edit1->Text);
u = acos(x);

и exe-шик выдает ошибку: acos: DOMAIN ERROR

math.h подключена, область определения acos [-1;1]. Подозреваю, что дело тут в том, что для acos x должно быть типа double. Но как перевести float x в double x? Или как сделать так, чтобы x сразу считывалось как double?

Отправлено: 01:48, 05-08-2008

 

Аватара для 5pliT

Новый участник


Сообщения: 21
Благодарности: 9

Профиль | Отправить PM | Цитировать


А какие ты числа вводишь в Edit1?
Вот такой вот код прекрасно работает при числах -1..1:
Код: Выделить весь код
#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	double x = StrToFloat(Edit1->Text);
	double u = acos(x);
	Edit2->Text = FloatToStr(u);
}
//---------------------------------------------------------------------------
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:01, 05-08-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для 0_5Mandarinki

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


5pliT, спасибо за ответ.

Ваш код работает. Но в моей программе все равно выдается та же ошибка. В ней я считываю х, подставляю его в формулу double z = f(x), а потом беру acos(z). Провожу проверку того, что z из [-1;1] :
Код: Выделить весь код
if(z>1 || z<-1){Edit9->Text = FloatToStr(z);};
exe-файл в Edit9 пишет 1! Но неравенство-то строгое. Т.е. он почему-то считает что значение 1, которое принимает z строго больше 1, а потому и не может посчитать арккосинус.

У кого-нибудь есть идеи почему он себя так странно ведет?

Чтобы все работало было просто дописано:
Код: Выделить весь код
if(z>1){ z=1;};
if(z<-1){z=-1;};
Но все же интересно, как сделать так, чтобы все работало "честно"?

Отправлено: 14:21, 05-08-2008 | #3


Аватара для 5pliT

Новый участник


Сообщения: 21
Благодарности: 9

Профиль | Отправить PM | Цитировать


Както не нравится мне ваша проверочка, поробуйте лучше такую:
x>=-1.0 && x<=1.0

Отправлено: 15:57, 05-08-2008 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


А если вы введете в EditBOx букву, как ваша программа будет работать? Вылетит в exception? Я бы вашем месте предварительно делал проверку на соответствие типа (вроде isDouble) вводимых данных, в случае положительного ответа уже плясал бы дальше. А то, может вы вводите число, а оно конвертируется функцией неверно? Может, конечно, я сильно привык к C#, но конструкция double x = StrToFloat довольно странна. Float и Double все таки разные типы данных.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:12, 05-08-2008 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - acos: DOMAIN ERROR

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] При вкл.пк появляется окно и пишется nknown BIOS error. Error code =FFFF Nataliarich Непонятные проблемы с Железом 1 10-01-2010 13:44
Ошибка - [решено] Error loading operating system и disk error occurred! Error95 Microsoft Windows 2000/XP 5 12-12-2009 14:05
Mandriva/Mandrake - spamass-milter Thrown error: execution error: No such file or directory _k4 Общий по Linux 1 24-01-2009 21:22
FreeBSD - Ошибки при установке порта FreeBSD *** Error code 2 *** Error code 1 travkog Общий по FreeBSD 6 04-08-2008 19:49
Domain OberWaffe Сетевые технологии 5 30-06-2003 19:42




 
Переход