Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Floating point error  (Прочитано 7282 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« : 27-11-2010 16:29 » 

Подскажите, что не так? Давно не кодил в Borland 3.1 и не общался с памятью.

Код:
#include <graphics.h>
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>

class Parallelepiped
{
float _a, _teta, _phi, _ro;
int _xw[8], _yw[8], _zw[8];
int _xe[8], _ye[8], _ze[8];

public:
Parallelepiped()
{

}

void Initialize()
{
int _x0[8]={-_a/2,-_a/2, _a/2, _a/2,-_a/2, _a/2, _a/2,-_a/2};
int _y0[8]={-_a/2, _a/2, _a/2,-_a/2,-_a/2,-_a/2, _a/2, _a/2};
int _z0[8]={-_a/2,-_a/2,-_a/2,-_a/2, _a/2, _a/2, _a/2, _a/2};

for(int i=0; i<sizeof(_x0)/sizeof(int); i++)
{
_xw[i]=_x0[i];
_yw[i]=_y0[i];
_zw[i]=-_z0[i];

_xe[i]=-_xw[i]*sin(_teta)+_yw[i]*cos(_teta);
_ye[i]=-_xw[i]*cos(_phi)*cos(_teta)-_yw[i]*cos(_phi)*sin(_teta)+_zw[i]*sin(_phi);
_ze[i]=-_xw[i]*sin(_phi)*cos(_teta)-_yw[i]*sin(_phi)*sin(_teta)-_zw[i]*cos(_phi)+_ro;
}
}

float teta(float teta)
{
_teta=teta;
}
float teta()
{
return _teta;
}

float phi(float phi)
{
_phi=phi;
}
float phi()
{
return _phi;
}

float ro(float ro)
{
_ro = ro;
}
float ro()
{
return _ro;
}
};

void main()
{
clrscr();
Parallelepiped*par = new Parallelepiped();
par->teta(0.0);
par->phi(90.0);
par->ro(200.0);
par->Initialize();
}

При инициализации 1-й переменной (не важно какой)- ошибки нет. Если проинициализировать несколько переменных, то выпадает ошибка: Floating point error:domain Abnormal program termination

Код:
	par->teta(0.0);
par->phi(90.0);
par->ro(200.0);
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 27-11-2010 17:00 » 

1) про какие переменные речь то ?
2) где ошибка возникает под отладкой ?
3) есть ошибки в этих функциях
Код:
	float teta(float teta)
{
_teta=teta;
}

float phi(float phi)
{
_phi=phi;
}

float ro(float ro)
{
_ro = ro;
}
- не возвращаешь значение (вернее, оно вернётся неопределённым)
Записан

FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 27-11-2010 19:11 » new

При вызове как раз этих функций и была ошибка. Убрал возврат значения и всё стало ок. Спс =)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines