Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблема в присвоении члена структуры


Автор: Akeem 5.11.2006, 18:21
НЕ знаю была ли такая тема. если бы ла то извините. просто небыло времени всё пролистать. Поиск ничего не дал!

Народ помогите или подскажите решение проблемы! 

у меня написана функция которая возвращает результат некоторой опреации с значениями в членах структуры.

Это выглядит приблизительно так:

Код

struct Coordinat
{
    float x;
    float y;
    float bias;
};
.......................................


double NNetwork::GetNorm(Coordinat vector,Coordinat Ave)
{
 double res;
 double x1 = (vector.x); //вот здесь возникает ошибка
 double x2 = (vector.y); //ну дальше она наверняка повторится
 double a1 = (Ave.x);
 double a2 = (Ave.y);
    res = (x1-a1)*(x1-a1)+(x2-a2)*(x2-a2);
        return res;
}


Мне говорили что это связано с непониманием компилятора операции обращении к члену структуры.

Ошибка которая возникает такая:
Код

---------------------------
Debugger Exception Notification
---------------------------
Project Lab2is.exe raised exception class EInvalidOp with message \'Invalid floating point operation\'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------


Плиз помогите. Модеры не сильно бейте. Давно бьюсь над этой ошибкой.

Автор: Daevaorn 5.11.2006, 18:25
Akeem,
Какой компилятор?
Зачем так много скобок?
Ошибка, судя по сообщению, в преобразовании float к double.

Автор: Akeem 5.11.2006, 18:44
вообще при этом не должна возникать ошибки. тут используется неявное преобразование типов.

Ошибка возникает видно из-за того что тут используется точка как оператор обращения к члену структуры.

Автор: Voldemar2004 5.11.2006, 18:49
Цитата
Invalid floating point operation
Неверная операция с плавающей точкой.

Akeem, т.к. класса NNetwork у меня нет, я сделал так:
Код

struct Coordinat
{
    float x;
    float y;
    float bias;
};

double GetNorm(Coordinat vector, Coordinat Ave)
{
 double res;
 double x1 = (vector.x); 
 double x2 = (vector.y); 
 double a1 = (Ave.x);
 double a2 = (Ave.y);
    res = (x1-a1)*(x1-a1)+(x2-a2)*(x2-a2);
        return res;
}


int main(void)
{

return 0;
}
Никаких ошибок.

А если у тебя возникают ошибки, то замени float на double
Код
{
    double x;
    double y;
    double bias;
};
Может быть поможет.

Добавлено @ 18:50 
Покажи, что такое NNetwork.

Автор: Akeem 5.11.2006, 18:51
вообще при этом не должна возникать ошибки. тут используется неявное преобразование типов.

Ошибка возникает видно из-за того что тут используется точка как оператор обращения к члену структуры.

Добавлено @ 18:55 
NNetwork -- это клас в котором эта функция описана. Служит для построения  многонейронной сети на основе РБФ!

Смысл в том что разница между double & foat не значительна. Просто разные диапазоны значений.

Автор: vinter 5.11.2006, 19:00
vector это зарезервированное слово, возможно проблемы с этим..
Цитата

Смысл в том что разница между double & foat не значительна. Просто разные диапазоны значений.

у char и int тоже ПРОСТО разные диапазоны значений smile , всегда делай явное преобразование типов..

Автор: Akeem 5.11.2006, 19:15
NNetwork -- это клас в котором эта функция описана. Служит для построения  многонейронной сети на основе РБФ!

Смысл в том что разница между double & foat не значительна. Просто разные диапазоны значений.

Автор: Akeem 5.11.2006, 19:39
Убрал ошибку в одном месте возникла в другом!

Я делал и явное преобразование и делал члены того же типа данных!

Автор: vinter 5.11.2006, 19:58
Цитата

Убрал ошибку в одном месте возникла в другом!

какую убрал, какая возникла?? тут телепатов нет(наверно  smile )

Автор: JackYF 6.11.2006, 16:02
У меня никакой ошибки не выдало... 

Проверь еще на инициализацию структуры перед передачей их в функции...

Автор: Akeem 19.11.2006, 18:26
Уже всё работает. Глюки какие то были. Я проверил прогу на Солярисе. там работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)