Czemu wyrzuca 0 dla x rożnych od 1 i -1 ?
#include
using namespace std;
int main()
{
int x;
bool wynik;
cout << "Podaj x: ";
cin >> x;
wynik = (x*(1/x)==1.0);
cout << wynik << endl;
}
Czemu wyrzuca 0 dla x rożnych od 1 i -1 ?
#include
using namespace std;
int main()
{
int x;
bool wynik;
cout << "Podaj x: ";
cin >> x;
wynik = (x*(1/x)==1.0);
cout << wynik << endl;
}
Bo tak ten program działa ?
Jeśli podamy 5:
wynik = 5 * 0 == 1.0
0 nie równa się 1.0
a skoro się nie równa to zwracam false czyli 0
Jeśli podamy 78:
wynik = 78 * 0 == 1.0
0 nie równa się 1.0
a skoro się nie równa to zwracam false czyli 0
Jeśli podamy 1:
1 * 1 == 1.0
1 równa się 1.0
a skoro się równa to zwracam true czyli 1
Pamiętaj, że w C++ w takich wyrażeniach brana jest cecha, czyli część całkowita. Tzn. dla
1 / 5 = 0.2
Zostanie wzięta cecha - czyli zero, a nie cała liczba 0.2 :!:
#include
using namespace std;
int main()
{
int x,y;
bool wynik;
cout << "Podaj x: ";
cin >> x;
wynik = (x*(1.0/x)==1.0);
cout << wynik << endl;
}
O a teraz działa, czemu nie bierze cechy?
Bierze całą liczbę bo:
(1 .0 /x)
znaczy ( jak można się łatwo domyślić ), że jest to operacja zmiennoprzecinkowa…