[C++] Czemu wyrzuca 0


(Kanaliaon) #1

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; 

}

(Quentin) #2

Bo tak ten program działa ?

Jeśli podamy 5:

:arrow: wynik = 5 * 0 == 1.0

:arrow: 0 nie równa się 1.0

:arrow: a skoro się nie równa to zwracam false czyli 0

Jeśli podamy 78:

:arrow: wynik = 78 * 0 == 1.0

:arrow: 0 nie równa się 1.0

:arrow: a skoro się nie równa to zwracam false czyli 0

Jeśli podamy 1:

:arrow: 1 * 1 == 1.0

:arrow: 1 równa się 1.0

:arrow: 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

:arrow: 1 / 5 = 0.2

Zostanie wzięta cecha - czyli zero, a nie cała liczba 0.2 :!:


(Kanaliaon) #3
#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?


(Quentin) #4

Bierze całą liczbę bo:

(1 .0 /x)

znaczy ( jak można się łatwo domyślić :slight_smile: ), że jest to operacja zmiennoprzecinkowa...