getrow Geschrieben 23. Oktober 2008 Geschrieben 23. Oktober 2008 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 Zitieren
flashpixx Geschrieben 23. Oktober 2008 Geschrieben 23. Oktober 2008 habe schon versucht mit einer 2 while schleife zu arbeiten aber es den leider doch nicht hinbekommen hoffe einer kann mir helfen ;D Ich gebe Dir mal folgende Hilfestellung: "so lange Eingabe 1 oder 2 oder 3 fehlerhaft ist, musst Du die Eingabe wiederholen" Phil Zitieren
Klotzkopp Geschrieben 23. Oktober 2008 Geschrieben 23. Oktober 2008 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. Zitieren
getrow Geschrieben 23. Oktober 2008 Autor Geschrieben 23. Oktober 2008 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! Zitieren
getrow Geschrieben 23. Oktober 2008 Autor Geschrieben 23. Oktober 2008 ok sry wegen doppelpost aber noch eine frage: ausgabe mit cout ist klar cout<<"..." 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 Zitieren
Klotzkopp Geschrieben 23. Oktober 2008 Geschrieben 23. Oktober 2008 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 besserSobald 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 cJa, das ist der Kommaoperator. Machs so: [CODE]cout << a << b << c; Zitieren
getrow Geschrieben 23. Oktober 2008 Autor Geschrieben 23. Oktober 2008 ahh super danke klappt alles Zitieren
Empfohlene Beiträge
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.