Форум программистов, компьютерный форум CyberForum.ru

почему не работает условие когда х=3 - C++

Восстановить пароль Регистрация
 
Diman29
 Аватар для Diman29
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 11
09.11.2011, 18:32     почему не работает условие когда х=3 #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <math.h>
 
int main()
{ double z11,x,p=0.85,q=2.15;
cout<<"Vvedi x: ";
   cin>>x;
 if((x==p+q)||(x==10))
    z11=3.45*1000*pow(q,x);
cout<<"Z11= "<<z11;
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
09.11.2011, 18:36     почему не работает условие когда х=3 #2
Все из-за того, что компьютер не умеет представлять точно вещественные числа, если дробь не является степенью двойки.
Лучше не сравнивать вещественные числа на равенство, чтобы избежать не правильного поведения программы.
Diman29
 Аватар для Diman29
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 11
09.11.2011, 19:20  [ТС]     почему не работает условие когда х=3 #3
А эту программу можно как - нибудь исправить?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
09.11.2011, 19:30     почему не работает условие когда х=3 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <math.h>
 
int main()
{ double z11,x,p=0.85,q=2.15, t= 3;
cout<<"Vvedi x: ";
   cin>>x;
 if((x==t)||(x==10))
    z11=3.45*1000*pow(q,x);
cout<<"Z11= "<<z11;
return 0;
}
Diman29
 Аватар для Diman29
4 / 4 / 0
Регистрация: 16.03.2011
Сообщений: 11
09.11.2011, 19:52  [ТС]     почему не работает условие когда х=3 #5
А как можно преобразовать число х чтобы равенство(x=p+q) сработало???
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
09.11.2011, 20:13     почему не работает условие когда х=3 #6
Дело не в x. А в p+q. Они не могут точно компьютером представляться как 0.85 и 2.15. Посмотрите при отладке какие значения они имеют.
Миниатюры
почему не работает условие когда х=3  
Yandex
Объявления
09.11.2011, 20:13     почему не работает условие когда х=3
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru