Zum Inhalt springen

C++ Programm bricht bei Fehler ab


getrow

Empfohlene Beiträge

Hallo,

Ich habe ein kleines Problem mit einen Programm es ist nichts großes es soll nach 3 Zahlen Fragen und diese dann geordnet ausgeben soweit sogut:

#include <cstdlib>

#include <iostream>

#include <stdio.h>


int l;

int a;

int b;

int c;

int w = 0;


using namespace std;


int main(void)

{

    while(w = 1)

    {


            printf("geben sie eine Zahl ein a= \n");

            cin>>a;



            printf("geben sie eine weitere Zahl ein b= \n");

            cin>>b;



            printf("geben sie die letzte Zahl ein c= \n");

            cin>>c;


            if ( cin.fail() ) 

            {    



            cout<<"Eingabe fehlgeschlagen"<<endl;

            system("PAUSE");

            }





            if (! cin.fail())

            {



                 if(a <= 

                 {

                      if(b < c)

                      {

                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("a=%d , b=%d , c=%.d\n", a , b , c);


                      }


                 }


                 if(a > 

                 {

                      if( b >= c)

                      {


                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("c=%d , b=%d , a=%.d\n", c , b , a);


                      }


                 }


                 if(b >= a)

                 {

                      if( a > c)

                      {


                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("c=%d , a=%d , b=%.d\n", c , a , ;


                     }


                 }


                 if( b < a)

                 {

                     if( a <= c)

                     {  

                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("b=%d , a=%d , c=%.d\n", b , a , c);


                     }


                 }


                 if(a <= c)

                 {

                      if( c <= 

                      {


                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("a=%d , c=%d , b=%.d\n", a , c , ;


                      }


                 }


                 if(a > c)

                 {

                      if( c > 

                      {


                           printf("Werte der Zahlen von"); 

                           printf(" der Kleinsten an geordnet\n");

                           printf("b=%d , c=%d , a=%.d\n", b , c , a);


                      }


                 }




            }



    }      

    system("PAUSE");

    return EXIT_SUCCESS;

}[/code]

Ich weis er ist ein bisschen if lastig und man könnte den vergleich wohl auch in eine while schleife packen ...hab ich aber nicht ;D

nun zu meiner Frage wenn ich wie es jetzt ist anstatt einer Zahl zb ein Buchstabe eintrage kommt eine Fehlermeldung(klar die habe ich auch selber geschrieben)aber das Fenster schließt sich was ich gerne verhindern würde dh er soll nach falscheingabe wieder zum anfang springen das ich nochmal eine Zahl eintragen kann

habe schon versucht mit einer 2 while schleife zu arbeiten aber es den leider doch nicht hinbekommen hoffe einer kann mir helfen ;D

Link zu diesem Kommentar
Auf anderen Seiten teilen

nun zu meiner Frage wenn ich wie es jetzt ist anstatt einer Zahl zb ein Buchstabe eintrage kommt eine Fehlermeldung(klar die habe ich auch selber geschrieben)aber das Fenster schließt sich was ich gerne verhindern würde dh er soll nach falscheingabe wieder zum anfang springen das ich nochmal eine Zahl eintragen kann
Das Programm sollte sich nicht schließen, weil du da eine Endlosschleife hast. Du musst allerdings die Fehlerflags des Eingabestreams zurücksetzen (cin.clear()) und die im Puffer verbliebenen Zeichen entfernen (cin.ignore()), wenn du weitermachen willst.

Außerdem solltest printf/scanf und cin/cout nicht mischen. Benutz nur cout, dann brauchst du auch <stdio.h> nicht mehr.

Und w=1 ist eine Zuweisung, kein Vergleich.

Und versuch, auf globale Variablen zu verzichten, das ist schlechter Stil.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Flashpixx und Klotzkopp,

hab es nun hinbekommen mit cin.clear()

habe schon versucht in die richtung zu gehen hatte nur nicht den richtigen befehl ;D

Außerdem solltest printf/scanf und cin/cout nicht mischen. Benutz nur cout, dann brauchst du auch <stdio.h> nicht mehr.

alles klar habe ich geändert wusste ich nicht versuch ja erst mein glück mit c++ ;D

Und w=1 ist eine Zuweisung, kein Vergleich.

wie meinst du das ?ich wollte eine endlosschleife erstellen geht doch damit oder gibt es einen "stilvolleren" Weg?

Und versuch, auf globale Variablen zu verzichten, das ist schlechter Stil.

Ich versuchs aber zz machen globale Variablen bei mir mehr sinn damit verstehe ich es besser

achja vielen dank an euch beide für die schnelle antwort saß nun 2 tage alleine drann!

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie meinst du das ?ich wollte eine endlosschleife erstellen geht doch damit oder gibt es einen "stilvolleren" Weg?

In C++ erstellt man Endlosschleifen üblicherweise durch

while(true)
oder
for(;;)[/code]




Ich versuchs aber zz machen globale Variablen bei mir mehr sinn damit verstehe ich es besser
Sobald deine Programme ein wenig komplizierter werden, bereiten globale Variablen massive Probleme bei der Übersichtlichkeit. Du kannst dann nur sehr schwer den Überblick behalten, wo sie benutzt und geändert werden, eben weil das überall im Code sein kann. Du tust dir selbst einen Gefallen, wenn du dir das schnell abgewöhnst.
ok sry wegen doppelpost aber noch eine frage:
Du kannst deine Beiträge übrigens 15 Minuten lang bearbeiten ;)
nun die frage wie kann ich dort 3 unterschiedliche variablen angeben also a b c weil wenn ich es so schreibe count<< a , b , c; gibt er mir nur a wieder und nicht b und c
Ja, das ist der Kommaoperator. Machs so:
[CODE]cout << a << b << c;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...