cin User Eingabe (Anfänger Frage) c++



  • Hier hab ich mal versucht ein Programm zur Berrechnung von Volumen Oberflaeche etc...

    #include <cstdlib>
    #include <iostream>
    #include <cmath>

    using namespace std;

    int main(int argc, char argv[])
    { double V;
    double O;
    double M;
    double G;
    double H;
    double U; //V=G*H O=M+2*G M=G
    H
    double S1;
    double S2;

    cout<<"Das ist ein Programm fuer die Berechnung von Mantel,Oberflaeche etc.."<<endl<<endl;
    cout<<"Wollen sie das Volumen berechenen tippen sie ein /v"<<endl;
    cout<<"Wollen sie die Oberflaeche berechnen tippen sie ein /o"<<endl;
    cout<<"Wollen sie den Mantel berechen tippen sie ein /m"<<endl;
    cout<<"Wollen sie die Grundflaeche berechnen tippen sie ein /g"<<endl;

    //Variabeln für die Eingabe zum Beispiel /m /g /o.....

    char Volumen;
    char Oberflaeche;
    char Mantel;
    char Grundflaeche;

    //-------------------------------------------------------------------------------------------------------------------------------------
    //Eingabe des Users (Volumen)

    if (Volumen=='v')
    {
    double VolumenEnd=float(G) * H;
    // also "v"
    cout<<"Geben sie die Grundflaeche und die Hoehe des Objekts an"<<endl<<endl;

    cout<<"Grundflaeche"<<endl;
    cin>>G;
    cout<<"Hoehe"<<endl;
    cin>>H;
    VolumenEnd=G * H;
    cout<<"Das Volumen betraegt"<<VolumenEnd<<endl<<"kubik(HIER MASSEINHEIT)"<<endl;//EndVolumen von der Berechnung G*H

    }
    //Eingabe des Users(Oberfläche)

    //-------------------------------------------------------------------------------------------------------------------------------------

    if ( Oberflaeche=='o')
    {

    double EndOberflaeche=float(M) + 2*G;
    // also "o"
    cout<<"Geben sie den Mantel und die Grundflaeche des Objekts an"<<endl<<endl;

    cout<<"Mantel"<<endl;
    cin>>M;
    cout<<"Grundfläche"<<endl;
    cin>>G;

    cout<<"Die Oberflaeche betraegt"<<EndOberflaeche<<endl<<"quadrat(HIER MASSEINHEIT)"<<endl;//EndOberflaeche von der Berechnung G*H
    }

    //-------------------------------------------------------------------------------------------------------------------------------------

    if (Mantel=='m')
    {
    double EndMantel=float(U) * H;
    // also "m"
    cout<<"Geben sie den Umfang und die Hoehe des Objekts an"<<endl<<endl;
    cout<<"Umfang"<<endl;
    cin>>U;
    cout<<"Hoehe"<<endl;
    cin>>H ;
    cout<<"Der Mantel betraegt"<<EndMantel<<endl<<"quadrat(HIER MASSEINHEIT)"<<endl;//EndMantel von der Berechnung G*H

    }

    //-------------------------------------------------------------------------------------------------------------------------------------

    if( Grundflaeche=='g')
    {

    double EndGrundflaeche=float(S1) * S2;
    // also "g"
    cout<<"Geben sie die 2 Seiten an"<<endl<<endl;

    cout<<"1.Seite"<<endl;
    cin>>S1;
    cout<<"2.Seite"<<endl;
    cin>>S2;
    cout<<"Die Grundflaeche betraegt"<<EndGrundflaeche<<endl<<"quadrat(HIER MASSEINHEIT)"<<endl;//EndMantel von der Berechnung G*H
    }
    //-------------------------------------------------------------------------------------------------------------------------------------

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Ich weiß,dass es schlecht programmiert ist aber wieder habe ich ein Problem
    die Konsole schließt sich SOFORT wieder was hab ich jetzt wieder falsch gemacht ;D?



  • Kein Thema, jeder fängt mal klein an. Hauptsache, man bleibt am Ball. 🙂

    Übrigens, du hast hier eine eckige statt einer geschweiften Klammer für deine main-Funktion verwendet. Hast du den Code vielleicht (falsch) abgetippt? Code immer per Copy&Paste hier posten, damit sich keine zusätzlichen Tippfehler einschleichen!



  • Und vielleicht nächstes Mal die [cpp]-Tags verwenden, damit der Code auch schön formatiert wird. Gleich die erste weisse Schaltfläche unter den Smileys.

    Das sieht dann so aus:

    int main()
    {
        std::cout << "Hello World" << std::endl;
    }
    


  • Hatte dich falsch verstanden matze

    @Nexus ok danke mach ich naechstes mal



  • Kleiner Tipp, gewöhn dir statt

    if (Mantel=='m')

    folgendes an:

    if ('m' == Mantel)

    Denn solltest du dich bei letzteren Vertippen und nur ein = schreiben, wird der Compiler meckern.



  • Fellhuhn schrieb:

    Kleiner Tipp, gewöhn dir statt

    if (Mantel=='m')

    folgendes an:

    if ('m' == Mantel)

    Denn solltest du dich bei letzteren Vertippen und nur ein = schreiben, wird der Compiler meckern.

    Habs umgeschrieb Danke aber trotzdem schließt sich die konsole jetzt wie von geisterhand und wenn ich den Befehl

    getchar();
    

    schreibe kann ich zwar schreiben es kommt aber nichts



  • Fellhuhn schrieb:

    Kleiner Tipp, gewöhn dir statt

    if (Mantel=='m')

    folgendes an:

    if ('m' == Mantel)

    Denn solltest du dich bei letzteren Vertippen und nur ein = schreiben, wird der Compiler meckern.

    Oder gewöhn dir gleich an, direkt == zu schreiben. :p

    Die Schreibweise if (Literal == Variable) finde ich unschön und unlogischer, da man eigentlich den Wert der Variable prüft und nicht den Wert des Literals (das ist zumindest meine Assoziation bei einem Vergleich). Ich kann mich zudem nicht erinnern, wann ich das letzte Mal = statt == geschrieben habe...

    Aber nimm, was für dich besser geht. Vielleicht ist Fellhuhns Variante am Anfang ratsamer.



  • Nexus schrieb:

    Fellhuhn schrieb:

    Kleiner Tipp, gewöhn dir statt

    if (Mantel=='m')

    folgendes an:

    if ('m' == Mantel)

    Denn solltest du dich bei letzteren Vertippen und nur ein = schreiben, wird der Compiler meckern.

    Oder gewöhn dir gleich an, direkt == zu schreiben. :p

    Die Schreibweise if (Literal == Variable) finde ich unschön und unlogischer, da man eigentlich den Wert der Variable prüft und nicht den Wert des Literals (das ist zumindest meine Assoziation bei einem Vergleich). Ich kann mich zudem nicht erinnern, wann ich das letzte Mal = statt == geschrieben habe...

    Aber nimm, was für dich besser geht. Vielleicht ist Fellhuhns Variante am Anfang ratsamer.

    Könntest du mir bitte ein Beispiel geben wie man es (deiner Meinung nach)
    besser schreiben koennte?^^



  • Nexus schrieb:

    Die Schreibweise if (Literal == Variable) finde ich unschön und unlogischer, da man eigentlich den Wert der Variable prüft und nicht den Wert des Literals (das ist zumindest meine Assoziation bei einem Vergleich).

    Da gebe ich dir schon Recht, aber die umgekehrte Schreibweise hat noch den Vorteil, dass beim Vergleich mit sehr langen Ausdrücken das Literal direkt sichtbar ist, ohne Scrolling oder sonstwas. Daher nutze ich es vereinzelt, wenn es der Lesbarkeit dient.

    if(IDYES==MessageBox( /* absurd lange Parameterliste ;) */ )
    


  • cooler78 schrieb:

    Könntest du mir bitte ein Beispiel geben wie man es (deiner Meinung nach)
    besser schreiben koennte?^^

    Naja, ich würde halt einfach

    if (Mantel == 'm')
    

    schreiben. Aber dann riskierst du eben, dass ein Vertipper trotzdem kompiliert. Was aber ohnehin nur etwas bringt, wenn skalare RValues (oder const -Variablen) im Spiel sind.

    Bei

    if (Mantel == meinDritterMantel)
    

    hast du wieder dasselbe Problem und kannst es nicht durch Vertauschen lösen. Aber ich finde es inkonsistent, hier den "abgefragten Wert" links und den "Vergleichswert" rechts zu schreiben, in Spezialfällen wegen der =-Gefahr jedoch umgekehrt. Aber das hat auch viel mit Geschmack zu tun. Mit der Zeit wirst du dir ohnehin deinen eigenen Stil bilden und merken, was für dich besser passt.

    _matze schrieb:

    Da gebe ich dir schon Recht, aber die umgekehrte Schreibweise hat noch den Vorteil, dass beim Vergleich mit sehr langen Ausdrücken das Literal direkt sichtbar ist, ohne Scrolling oder sonstwas. Daher nutze ich es vereinzelt, wenn es der Lesbarkeit dient.

    Guter Punkt, daran habe ich jetzt gar nicht gedacht. Allerdings habe ich das Gefühl, bei mir haben solche längeren Funktionsaufrufe (oder arithmetische Ausdrücke) entweder oft bool -Rückgabetypen, oder es steht auf beiden Seiten des Vergleichsoperators etwas Langes. Zumindest ist es mir bisher noch nie sehr unübersichtlich vorgekommen... 😉



  • So noch ne Frage ich lese zur Zeit mein erstes c++ Buch es ist das Buch:

    Einstieg in c++ von Arnold Willemer (vllt. kennt es ja jemand)

    und ich wollte euch fragen welches Buch ihr empfehlen koennt
    und ob es evtl. auch ein Buch gibt das auf den erworbenen Kentnissen des erwähnten Buches aufbaut.

    und danke fuer die rege Beteiligung hier ^^



  • Hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html

    werden viele gute Bücher gennant (vom User "Mitleid").

    Da hat es gute Bücher für Fortgeschrittene.



  • wie geht der syntax für

    if (cin=="y")
    {
    
    .....
    
    }
    

    Also wie geht der Code fuer eine Abfrage ob cin irgendeinen Buchstabe ist



  • cin ist nie ein Buchstabe, es ist ein Stream-Objekt, mit dem von der Standardeingabe gelesen werden kann. Was du sicher willst, ist:

    char c;
    cin >> c;
    if(c == 'y')
    {
    //...
    }
    

    Beachte dabei, dass Buchstabenliterale mit einfachen Anführungszeichen geschrieben werden, im Gegensatz zu den doppelten Anführungszeichen bei Strings.



  • DANKE DANKE
    Genau das habe ich gebraucht^^



  • hat sich geklaert
    zu dumm zum LEsen



  • Tschuldigun fuer die dummen Fragen
    aber warum geht das nicht

    double VolumenKugel=float(4/3)*3,14159265*radius^3;



  • Bitte muss dringend weiterkommen^^



  • 2 fehler:

    double VolumenKugel=float(4/3)*3,14159265*radius^3;
    //                              ^               ^
    

    1. 3.14159265
    2. radius*radius*radius

    der ^-operator macht nicht das, was du dir erhoffst sondern ist ein XOR.

    bb



  • Danke an euch alle das ihr mir so hilft
    das mit ^3 hab ich mir schon gedacht und hatte es auch umgeschrieben
    aber das der Compiler 3,.. anders ließt als 3. .. (was ja eigtl.logisch ist)
    darauf bin ich nicht gekommen ^^


Anmelden zum Antworten