Uhr c++



  • Guten morgen,

    In dieser Aufgabe sollen Sie zu einer gegebenen Uhrzeit im 24-Stunden-Format (hh:mm) berechnen, wie groß der (kleinere) Winkel zwischen dem Stunden- und dem Minutenzeiger auf einem Ziffernblatt ist. Der Benutzer soll dabei die Uhrzeit über die Kommandozeile eingeben können.

    Bsp.:

    Stunden: 10

    Minuten: 30

    Der Winkel betraegt 135 Grad.

    Achten Sie bitte darauf, dass sich der Stundenzeiger während einer Stunde mitbewegt! So beträgt der Winkel bei der Uhrzeit 09:30 nicht 90 Grad sondern 105 Grad!"

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
    	float h,min,wh,wmin,result;	//Eingabe Uhrzeit (h,min), winkel der uhrzeiger(wh,wmin)
    	const float hw=0.5;	//Winkelgröße des Stundenzeigers pro min (360/12/60 z.B:10h=600min=300grad)
    	const float minw=6;	//Winkelgröße des Minutenzeigers pro min (360/60)
    
    	cout<<"Geben Sie die Uhrzeit ein:\n";
    	cout<<"h:";
    	cin>>h;
    	cout<<"min:";
    	cin>>min;
    
    	//Umwandlung der Uhrzeit, in die Winkel der Zeiger
    	wh=(h*60+min)*hw;
    	if (wh>360) wh=wh-360; //da es max 360grad sein kann
    	wmin=(min*minw);
    	//Berechnung der Winkel
    	if (wh<wmin) {
    				result=wmin-wh;
    	} else{
    				result=wh-wmin;
    	}
    	if (result>180){
    					result=360-result;   //um den kleineren Winkel zu berechnen
    	}
    	cout<<"Der Winkel betraegt "<<result<<" Grad.";
    }
    

    wenn ich es ausführe und 9:30 eintippe kommt bei mir 90grad, es müsste aber 105 grad laut der Aufgabenstellung rauskommen... Kann mir jmd helfen wo ich was ergänzen muss?


  • Mod

    Hast du eventuell "9:30" eingegeben, also mit Doppelpunkt? Dieses Format passt nicht zu der Art und Weise, wie du die Zeit einliest. Wenn man die Zeit passend zu deinen Eingabefunktionen eingibt, kommt auch das richtige raus:
    http://ideone.com/w3N00y

    90 Grad würde hingegen gut zu irgendwelchen Debugbuilds passen, bei denen min nach einem Lesefehler 0 ist.

    Probleme dieser Art kann man mit einem Debugger klasse nachvollziehen. Oder wenigstens mit ein paar Ausgaben von Zwischenergebnissen.

    Man könnte sich natürlich auch angewöhnen, auf den Erfolg von Lesefunktionen zu prüfen.



  • Ja du hast recht. Es ist noch früh am Morgen...habe wirklich 9:30 eingetippt.
    wenn ich 9 30 eintippe kommen die 105 grad.

    Danke 🙂


Anmelden zum Antworten