Hilfe bei Programm(Anfänger)



  • Das Programm funktioniert jetzt einwandfrei.
    Es wird jetzt nur überprüft ob eine Zahl eingegeben wurde. Es hängt sich aber auf wenn man Buchstaben etc. eingibt! Wei kann ich das Problem lösen?!



  • borg schrieb:

    an chri5 und mecnels, man kann float nicht auf gleichheit überprüfen!!!!!
    das funktioniert so wie ihr das gemacht habt im zweifelsfall nicht.

    +1



  • nicknack2002 schrieb:

    Danke ihr habt mir sehr sehr geholfen! Ich werde jetzt versuchen eure Tipps umzusetzen. Goto wollte ich nur benutzen weil es eh nur einmal vorkommt. In meinem Buch wurde mir ausdrücklich davor gewarnt 😉

    Goto ist übrigens auch ein Standard C++ Befehl, und zwar einer der ältesten überhaupt. Weil sich (theoretisch zumindest) jedes Programm auch ohne goto schreiben lässt, sieht es ein bisschen unbeholfen aus. Außerdem wird es ziemlich kompliziert, dem Programmverlauf zu folgen, wenn man mit goto um sich wirft. Trotzdem - es gibt auch Fälle, in denen ist man doch ganz froh, tief verschachtelte Schleifen einfach mit goto abbrechen zu können (z.B. weil break nur die innerste Schleife beenden würde, man aber aus allen Schleifen sofort hinaus springen möchte. Also ganz so ist das nicht, dass goto immer schlecht ist.
    In Deinem Programm bewirkt das goto allerdings leider, dass das Programm endlos läuft. Vielleicht führst Du einen weiteren Menüpunkt ein, etwa '1.6 für Beenden', dann wär' auch dieses Problem behoben.

    M.

    🙂



  • ja, im zweifelsfall gehts nicht .... aber hier wirds wohl schon noch klappen ... hab ich auch geschrieben das man so was net macht 😉 ...
    chris



  • Mein Programm sieht jetzt so aus:

    #include <iostream.h>
    #include <conio.h>
    
    int main()
    {
         double wahl,r,h;
         cout << "Copyright 15.1.2004 by nicknack2002\n\n\n";
         while (wahl != 9) 
         {
    
               cout << "Volumenberechnung oder Oberfleachenberechnung eines Zylinders:\n\n";
               cout << "1. Oberflaeche\n" << "2. Volumen\n\n" << "9.Beenden\n" << "Bitte Weahlen: ";
               cin >> wahl;
            if (wahl == 1)
               {
               cout << "\nHoehe: ";
               cin >> h;
               cout << "\nRadius: ";
               cin >> r;
               cout << "\nOberflaeche: " << 2*3.14*r*(r+h);
               }
            if (wahl == 2)
               {
               cout << "\nHoehe: ";
               cin >> h;
               cout << "\nRadius: ";
               cin >> r;
               cout << "\nVolumen: " << 3.14*r*r*h;
               }
            if (wahl != 1 && wahl != 2 && wahl != 9)   
               {
               cout << "Bitte wiederholen sie ihre Eingabe!\n\n\n\n";
               }
               }
    
        return 0;
    
    }
    

    Wenn ich jetzt bei der Wahl keine Zahl sondern einen Buchstaben schreibe läuft die schleife endlos-was kann ich machen(außer jeden Buchstaben einzugeben...) ?



  • #include <iostream>
    using namespace std;
    
    int eingabe( )
    {
        int i;
        while (!(cin >> i))
        {
            cout << "das war kein int!" << endl;
            cin.clear( );
            cin.get( );
        }
        return i;
    }
    
    int main()
    {
         cout << "Copyright 15.1.2004 by nicknack2002\n\n\n";
         int wahl = 0;
         while (wahl != 9)
         {
               cout << "Volumenberechnung oder Oberfleachenberechnung eines Zylinders:\n\n";
               cout << "1. Oberflaeche\n" << "2. Volumen\n\n" << "9.Beenden\n" << "Bitte Weahlen: ";
               wahl = eingabe( );
               if (wahl == 1)
               {
                    cout << "\nHoehe: ";
                    int h = eingabe( );
                    cout << "\nRadius: ";
                    int r = eingabe( );
                    cout << "\nOberflaeche: " << 2*3.14*r*(r+h);
               }
               if (wahl == 2)
               {
                    cout << "\nHoehe: ";
                    int h = eingabe( );
                    cout << "\nRadius: ";
                    int r = eingabe( );
                    cout << "\nVolumen: " << 3.14*r*r*h;
               }
               if (wahl != 1 && wahl != 2 && wahl != 9)  
                    cout << "Bitte wiederholen sie ihre Eingabe!\n\n\n\n";
         }
    }
    

    herausfinden ob die eingabe korrekt war kannst du mit

    if( cin.fail() ) //true, falls falsche eingabe
    

    man kann aber auch einfach schreiben

    if( !cin )
    

    das ist das gleiche

    also machen wir daraus doch einfach

    while (!(cin >> i) )
    

    damit wir nicht in einer endlosschleife landen müssen wir in der schleife noch machen

    cin.clear( ) // clear setzt die Zustandsflags wieder auf "alles heile"
    cin.get( ) // zeilenumbruch rausholen
    


  • HansImSuff schrieb:

    M.

    🙂

    M wie Mecnels?



  • Mecnels schrieb:

    Und überleg Dir, C++ Das Grundlagen Buch (Data Becker), zu beschaffen, das Buch ist die #1 wenn's um's Erwerben der Standard-C++ - Kenntnisse geht. 😃

    Das erklärt einiges ...



  • Walli schrieb:

    Mecnels schrieb:

    Und überleg Dir, C++ Das Grundlagen Buch (Data Becker), zu beschaffen, das Buch ist die #1 wenn's um's Erwerben der Standard-C++ - Kenntnisse geht. 😃

    Das erklärt einiges ...

    Das Buch ist klasse!

    Mein Nick ist ein Anagramm.
    Ich bin natürlich nicht 59 sondern 25 (ist meine Angewohnheit, das Klima
    in Foren, auf denen ich neu bin, durch Aufsetzen von Masken zu erforschen,
    sorry :))
    Jedenfalls sind die meisten von Euch hier total ok.
    Was ich auf Eurem Board vermisse ist ein Unterforum, auf dem sich Neue
    Forenmitglieder vorstellen können, außerdem ist mir bis jetzt immer noch
    kein PM - Feature ins Auge gesprungen, viel Geflamme wär sonst sicher nicht
    nötig gewesen.
    Mein Studium der Informatik hab ich nach anderthalb Jahren enttäuscht
    abgebrochen, weil
    erstens: Dinge gelehrt wurden, die ich mit 11 Jahren an meinem Amiga 500
    schon gewusst hab
    zweitens: die Ausstattung der Unis in punkto Rechnern und OS in meinen Augen
    Substandard ist
    drittens: es eine Frechheit ist, nach zehn Jahren begeisterten eigenständigen
    Studiums der Programmiersprachen C und C++, an der Uni
    plötzlich das viel langsamere JAVA aufgezwungen zu bekommen
    viertens: eine Sprache nicht ausschließlich auf ihre Grammatik zu reduzieren
    ist (angenommen ihr würdet die Grammatik der Französischen Sprache perfekt
    beherrschen, aber fast gar keine Vokabel können, dann macht Ihr Urlaub in
    Paris - trotz perfekter Kenntnis der Grammatik habt ihr keine Chance, Euch
    auch nur einigermaßen zu verständigen, weil Euch einfach die Vokabel fehlen;
    ich betrachte Programmiersprachen ganz ähnlich wie 'echte' Sprachen, man
    kann die 'Grammatik' von C/C++ - also etwa das Wissen, wie Polymorphismus
    prinzipiell funktioniert, noch so perfekt beherrschen, man wird trotzdem
    kein einziges vorzeigbares Programm mit diesem grammatischen Wissen allein
    zu stande bringen. Zumindest nicht innerhalb einer angemessenen Zeit.
    Vokabel sind beim Erlernen einer Sprache genauso wichtig, wie das Erlernen
    der Grammatik, die Vokabeln sind, im Falle von Programmiersprachen
    die konkreten Bezeichner (nur um ein Beispiel zu nennen: 'CreateFile',
    'WM_GETTEXT', natürlich sind auch 'ofstream' oder 'cout' nur
    Vokabel - Eine Sprache kennt oft mehrere Begriffe, die
    ähnliche Bedeutung haben)
    fünftens: ich einem lukrativen Angebot einer Firma nicht widerstehen konnte
    sechstens: mittlerweile trotzdem schon seit drei Jahren in der Branche bin
    siebtens: mich Professoren, die sich mit MS-Feindlichkeit vor 18-20 jährigen
    Studenten profileren wollen, ankotzen

    Tja, etwas verspätet, aber doch - Klartext.
    (mal ehrlich, die Maske habt Ihr mir doch alle abgekauft :))



  • EhrlicherMecnels schrieb:

    Mein Studium der Informatik hab ich nach anderthalb Jahren enttäuscht
    abgebrochen, weil
    erstens: Dinge gelehrt wurden, die ich mit 11 Jahren an meinem Amiga 500
    schon gewusst hab

    das ist doch schön für dich, wenn du dinge schon kennst?

    EhrlicherMecnels schrieb:

    zweitens: die Ausstattung der Unis in punkto Rechnern und OS in meinen Augen
    Substandard ist

    was hat denn ein informatik-studium mit rechnern oder dem os auf diesen zu tun? waren die rechner so schnell und das os so gut das man texte drauf verfassen und programme drauf kompileren konnte? was brauchst du mehr?

    EhrlicherMecnels schrieb:

    drittens: es eine Frechheit ist, nach zehn Jahren begeisterten eigenständigen
    Studiums der Programmiersprachen C und C++, an der Uni
    plötzlich das viel langsamere JAVA aufgezwungen zu bekommen

    das ist doch super, stell dir vor sie hätten dir c++ beigebracht, dann hättest du doch nichts gelernt.

    EhrlicherMecnels schrieb:

    viertens: eine Sprache nicht ausschließlich auf ihre Grammatik zu reduzieren
    ist (angenommen ihr würdet die Grammatik der Französischen Sprache perfekt
    beherrschen, aber fast gar keine Vokabel können, dann macht Ihr Urlaub in
    Paris - trotz perfekter Kenntnis der Grammatik habt ihr keine Chance, Euch
    auch nur einigermaßen zu verständigen, weil Euch einfach die Vokabel fehlen;
    ich betrachte Programmiersprachen ganz ähnlich wie 'echte' Sprachen, man
    kann die 'Grammatik' von C/C++ - also etwa das Wissen, wie Polymorphismus
    prinzipiell funktioniert, noch so perfekt beherrschen, man wird trotzdem
    kein einziges vorzeigbares Programm mit diesem grammatischen Wissen allein
    zu stande bringen. Zumindest nicht innerhalb einer angemessenen Zeit.
    Vokabel sind beim Erlernen einer Sprache genauso wichtig, wie das Erlernen
    der Grammatik, die Vokabeln sind, im Falle von Programmiersprachen
    die konkreten Bezeichner (nur um ein Beispiel zu nennen: 'CreateFile',
    'WM_GETTEXT', natürlich sind auch 'ofstream' oder 'cout' nur
    Vokabel - Eine Sprache kennt oft mehrere Begriffe, die
    ähnliche Bedeutung haben)

    du hast leider nicht erfasst worum es in einem informatik studium geht, das erlernen einer programmiersprache nimmt nur einen kleinen teil eines informatikstudiums ein. da kann man dann halt nicht so weit in die tiefe gehen. man baut ja in einem physikstudium auch keine atomkraftwerke. auch wenn die atomkraft ein interessantes teilgebiet der physik ist.

    EhrlicherMecnels schrieb:

    siebtens: mich Professoren, die sich mit MS-Feindlichkeit vor 18-20 jährigen
    Studenten profileren wollen, ankotzen

    tja, andere kotzt halt dein ms-quelltext-geposte an.

    EhrlicherMecnels schrieb:

    Tja, etwas verspätet, aber doch - Klartext.
    (mal ehrlich, die Maske habt Ihr mir doch alle abgekauft :))

    das gehört hier übrigens nicht in den thread...



  • Also, wenn du wirklich programmieren lernen willst, dann machs wie ich: ich hab gekauft: May: Grundkurs Softwareentwicklung mit C++. In Amazon gibts wohl gute Kritiken. Das war viel beser als manches andere Buch.

    Fang langsam an mit der Arbeit! 😋


Anmelden zum Antworten