Langen Term in c++ realisieren


  • Administrator

    1. math.h ist kein C++ Header, sondern ein C Header. Der C++ Header lautet cmath .
      2. Mach Zwischenresultate und verrechne diese weiter. Der Compiler optimiert dies dann wahrscheinlich völlig weg. Zum Debuggen ist das aber unheimlich praktisch, damit man gleich die Zwischenresultate einsehen kann.

    Grüssli



  • Ich hab das jetzt mal als eine lange Formal geschrieben, da das dann übersichtlicher wird.
    Und Zwischenwerte abzufragen wäre ja nur in dem Fall praktisch, falls ein Fehler vorliegen sollte, und dann wird die Formal ja sowieso berichtigt 😉

    Hier mal der Code, den ich geschrieben habe, um die Wurfweite beim schrägen Wurf auszurechnen. Könnte da mal grad jemand trüberschauen? Ich hab hier nämlich keinen Compiler zur Hand, um zu testen obs klappt.
    Der Code ist ja nicht grade lang oder schwer, aber ich stecke in den Kinderschuhen 😉

    // Tool zum Berechnen der Flugweite beim schrägen Wurf
    //
    
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    //Hauptprgramm
    //
    
    int main()
    {
    	//Variablen deklarieren
    	//
    
    	float Flugweite;
    	float Abwurfhöhe;
    	float Walpha;
    	float Calpha;
    	float Flugzeit;
    	float Vnull;
    
    	//Variablen über Benutzereingabe definieren
    	//
    	cout << "Abwurfhöhe angeben: ";
    	cin >> Abwurfhöhe;
    	cout << endl;
    
    	cout << "Abwurfwinkel angeben: ";
    	cin >> Walpha;
    	cout << endl;
    
    	cout << "Abwurfgeschwindigkeit angeben: ";
    	cin >> Vnull;
    	cout << endl;
    
    	//Berechnen von Cosinus Alpha
    	//
    	Calpha = cos (Walpha);
    
    	//Berechnen der Flugzeit
    	//
    	Flugzeit = Vnull * Calpha + sqrt(pow(double Vnull, double 2) * pow(double sin (Walpha), double 2) + 2 * 9,81 * Abwurfhöhe) / 9,81;
    
    	//Berechnen der Flugweite
    	//
    	Flugweite = Vnull * Calpha * Flugzeit;
    
    	cout << "Flugweite: " << Flugweite << endl;
    
    	return 0;
    }
    

    Und eine Frage hab ich immer noch:
    Ich bin mir grad nicht sicher, aber kann es sein, dass wenn ich die exe dann hinterher starte, mein Ergebniss dann gleich wieder verschwindet und sich die Konsole schließt?

    Ich war der Meinung, ich muss noch einen Codeschnipsel einfügen, damit am Schluss das Ergebnis stehen bleibt...

    freundliche Grüße
    jusaca



  • jusaca schrieb:

    Ich bin mir grad nicht sicher, aber kann es sein, dass wenn ich die exe dann hinterher starte, mein Ergebniss dann gleich wieder verschwindet und sich die Konsole schließt?

    Ich war der Meinung, ich muss noch einen Codeschnipsel einfügen, damit am Schluss das Ergebnis stehen bleibt...

    Ja, entweder Du baust eine Wartefunktion ein, oder Du startest das Programm aus einer vorher geöffneten Konsole.


  • Administrator

    jusaca schrieb:

    Und Zwischenwerte abzufragen wäre ja nur in dem Fall praktisch, falls ein Fehler vorliegen sollte, und dann wird die Formal ja sowieso berichtigt 😉

    Und wie findest du raus, dass etwas, bzw. was genau, falsch läuft? Aja, genau, in dem man die Zwischenresultate anschaut. 🙂
    Für allem für später, wenn man noch grössere Berechnungen hat, sollte man sich so ein Vorgehen angewöhnen. Beim Programmieren geht es nicht darum, ob etwas "schön" aussieht, sondern ob man den Programmcode lesen und debuggen kann. Die Wartung ist viel wichtiger!

    jusaca schrieb:

    Und eine Frage hab ich immer noch:
    Ich bin mir grad nicht sicher, aber kann es sein, dass wenn ich die exe dann hinterher starte, mein Ergebniss dann gleich wieder verschwindet und sich die Konsole schließt?

    Ich war der Meinung, ich muss noch einen Codeschnipsel einfügen, damit am Schluss das Ergebnis stehen bleibt...

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    Grüssli



  • Ok,
    jetzt habe ich

    1. alle Schritte einzeln in Variablen gepackt
    2. mir nen Compiler besorgt und installiert (ist zwar uralt, aber klappt noch :D)

    Aber in dieser Zeile:

    Flugzeit = Vnull * Calpha + sqrt(Vnullq * Salphaq + 2 * 9,81 * Abwurfhoehe) / 9,81;
    

    Bekomme ich folgenden Fehler:
    "error C2660: 'sqrt' : Funktion akzeptiert keine 2 Parameter"

    Wo hab ich denn nun den Fehler eingebaut?

    freundliche Grüße
    jusaca


  • Administrator

    9,81 ist falsch! Richtig wäre 9.81
    C++ ist schliesslich eine englisch ausgerichtete Sprache 😉

    Grüssli



  • Ah!! Stimmt..... so ein kleines Missgeschick und schon sucht man sich halb tot^^

    Ich danke euch für eure Hilfe - jetzt klappt alles. Muss mich nur noch mit der Warteschleife beschäftigen, damit ich das Ergebnis auch genießen kann *g

    freundliche Grüße
    jusaca



  • In deinem Ausdruck könntest du 9.81 als eine Konstante definieren (ja nicht mit #define ), da die Zahl mehrmals vorkommt:

    const float g = 9.81f;
    

    Übrigens:

    jusaca schrieb:

    Ok,
    jetzt habe ich [...] mir nen Compiler besorgt und installiert (ist zwar uralt, aber klappt noch :D)

    Davon würde ich dringendst abraten. Du handelst dir dabei nur Probleme ein. Es gibt kostenlose moderne Entwicklungsumgebungen wie Microsoft Visual C++ 2008 Express oder Code::Blocks, die sind auch weitgehend mit dem C++-Standard kompatibel.



  • Nexus schrieb:

    Davon würde ich dringendst abraten. Du handelst dir dabei nur Probleme ein. Es gibt kostenlose moderne Entwicklungsumgebungen wie Microsoft Visual C++ 2008 Express oder Code::Blocks, die sind auch weitgehend mit dem C++-Standard kompatibel.

    Ich hatte noch "Microsoft Visual C++ 6.0" auf CD. Habe ich jetzt benutzt, weil ich nichts anderes zur Hand hatte 😉

    Aber ich stehe heute abend echt auf dem Schlauch.... An welcher Stelle von dem Code muss ich denn nun das "void wait () " einfügen, damit der mir das Programm auch wirklich anhält?

    freundliche Grüße
    jusaca



  • Na also, jetzt hab ich es 😉

    Nochmal einen dank an die Community und eine gute Nacht 😉

    Grüße
    jusaca


Anmelden zum Antworten