berrechnung in einer Methode immer 0 wieso?



  • Hi,

    ich habe eine Klasse Dreieck und die greift per public Methoden auf Werte der Klasse Punkt zu.

    float Dreieck::flaeche(void) const
    {
    	// Werte vom Dreieck mit Methode getX aus Klasse Punkt2D holen.
    
    	int tempxA = pA.getX(); int tempyA = pA.getY();
    	int tempxB = pB.getX(); int tempyB = pB.getY();
    	int tempxC = pC.getX(); int tempyC = pC.getY();
    	/*cout << tempxA << endl;
    	cout << tempxB << endl;
    	cout << tempxC << endl;
    	cout << tempyA << endl;
    	cout << tempyB << endl;
    	cout << tempyC << endl;
    	*/
    	float f; 
    	f = (1/2) *(tempxA * (tempyB - tempyC) + tempxB * (tempyC - tempyA) + tempxC * (tempyA - tempyB));
    	if(f >= 0)
    	{
    		return f;		//Falls Fläche nicht negativ f zurückgeben 
    	}
    	else
    	{
    		f = f * (-1);
    
    		return f;	//Falls Fläche negativ f mit -1 multiplizieren
    	}
    }
    

    tempxA usw haben richtige Werte zugewiesen bekommen. Nur f ist immer null wieso?



  • 1/2 ist nach C++-Regeln 0. Wieso?

    1 ist ein int
    2 ist ein int
    Die arithmetische Verknüpfung von zwei ints ist wieder ein int, also wird das mathematisch korrekte Ergebnis von 0.5 zu 0 abgerundet.

    Lösung: 0.5 hinschreiben. Oder 1.0/2



  • Könnte daran liegen, dass in C++ 1/2 niemals = 0.5 ist, sondern = 0.



  • mist 😞 zuspät



  • Ok THX das war es habe 1.0 statt 1 jetzt eingesetzt.

    Danke noch mal!


Anmelden zum Antworten