Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ф-ия sqrt 
:(
    Опции темы
rthsobakas
Дата 6.11.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



мне надо в переменную типа int записать значение sqrt

Код

       double rt=Sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
       MPrima[i][j]=(int)rt;


но на строчке с double выдается ошибка project raised exception  class EInvalidOp with message 'Invalid floating point operation'

То есть че то с типами, помогите разобраться.
PM   Вверх
mes
Дата 6.11.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Sqrt генерирует EInvalidOp исключение, когда аргумент отрицательный 


--------------------
PM MAIL WWW   Вверх
Great Cornholio
Дата 7.11.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mes @  7.11.2008,  01:11 Найти цитируемый пост)
Sqrt генерирует EInvalidOp исключение, когда аргумент отрицательный 

О_О, там же сумма квадратов!)) как так?))

PM   Вверх
YanTsys
Дата 7.11.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Какой тип у переменных x1 x0 y1 y0 и какие значения присвоены этим переменным перед вылетом ошибки?
PM MAIL ICQ   Вверх
Great Cornholio
Дата 7.11.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



кста, тупо конечно, но попробуй:

Код

double rt=Sqrt(((x1-x0)*(x1-x0))+((y1-y0)*(y1-y0)));
       MPrima[i][j]=(int)rt;

PM   Вверх
fronya
Дата 8.11.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А может нужно все-таки написать Sqrt не с большой буквы  smile 
У меня лично все прекрасно работает:
Код

#include <math.h>
double x1,x0,y1,y0;
 x1=0,2;
 x0=0.3;
 y1=0.8;
 y0=0.7;
double rt=sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
Edit1->Text=AnsiString(rt);


Или у тя в другом проблема.... ( и проверь типы данных, может там не состыковочка вышла) 
PM MAIL   Вверх
volvo877
Дата 8.11.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(fronya @  8.11.2008,  17:32 Найти цитируемый пост)
У меня лично все прекрасно работает:
Еще бы... У тебя вообще ни одного отрицательного множителя не присутствует... Или ты все еще думаешь, что x1 будет меньше, чем x0 ???
PM MAIL   Вверх
de_Nis
Дата 9.11.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


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

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



fronya,  странно, что приведенный в сообщении код вообще работает:  x1=0,2; (в третьей строке) содержит в качестве десятичного разделителя запятую, а не точку. Или для  C++ Builder это не имеет значения?
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
Alexeis
Дата 9.11.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



  И  еще одно предположение, по скольку сумма квадратов не может быть отрицательной, может быть переполнение инта как аргумента функции. Если он больше 2х Млрд то число станет отрицательным и функция попытается вычислить корень отрицательного числа.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rthsobakas
Дата 9.11.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



мда, вообщем там не double ,  а  float тип должен был стоять(хотя в хелпе дубл написан).
PM   Вверх
Great Cornholio
Дата 11.11.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а не sqrtl ли? кстати)) непомню чем точно различаются, но l - long
PM   Вверх
YanTsys
Дата 11.11.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Alexeis @ 9.11.2008,  16:15)
И  еще одно предположение, по скольку сумма квадратов не может быть отрицательной, может быть переполнение инта как аргумента функции. Если он больше 2х Млрд то число станет отрицательным и функция попытается вычислить корень отрицательного числа.

Так же подумал, поэтому и хочется узнать при каких значениях  x1 x0 y1 y0 программа выдает ошибку smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.