Добрый день. Проблема в чем? - выдает ошибку:
"invalid operands of types 'double' and 'double(const char*) throw()' to binary 'operator=='"
Вот фрагмент кода, в котором выдает ошибку:
double Opredel(){
int swapc= triangulat();
double opredel=mat[0][0];
for(int i=1;i<size;i++){
mat[i][i]= 0;
opredel*=mat[i][i];
}
if(swapc % 2 != 0 ){
opredel *=-1;
}
if(opredel == nan){
opredel = 0;
}
return opredel;
}
Если будет не сложно, то объясните почему возникает эта ошибка, чтобы впредь таких не совершать. Спасибо.
Сравнивать с NaN нельзя, это всегда false
- по определению :)
Посмотрите на функцию isnan
, или, как вариант - поскольку сравнение NaN всегда ложно - можно проверять вот так:
bool is_nan(double x) { return x != x; }
Только учтите, что не все компиляторы это все поддерживают (насколько я помню, Watcom что-то не так считал... но не помню, что) и второе - такая проверка - это говорит скорее о некорректности самого алгоритма...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подключил буст, всё ок, но потом компилятор начал выдвать ошибку:
Имеется два массива (вектора, разницы нет какой контейнер использовать) нужно найти два элемента, которые есть и в первом и во второмКроме...
Необходимо под Linux системой (Ubuntu 17) собрать проект с использованием cmake