helby Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 hab mal ne frage: wie funktionieren Marken in c++ und wie definiert man diese? ich möchte eine einfache abfrage starten: Die Marke 1 möchte ich am anfang der main () setzen damit das programm beim wiederholen reinspringt if (antwort=="ja") {system("cls"); cout<<"Danke für das BEnutzen des PRogramms"<<end; std::cin.clear(); std::ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); exit(0); } else {system("cls"); goto Marke1;} Zitieren
Guybrush Threepwood Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Am Besten gar nicht goto ist sehr sehr schlechter Programmierstil, weil es das Programm unübersichtlich und schlecht leserlich macht. Du kannst alles was du mit goto machen willst auch mit anderen Mitteln (in dem Fall einer Schleife) machen und das ist zu 99% auch der bessere Weg. Zitieren
helby Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 bin jetzt ganz am anfang. mein lehrer hat mri gestern mitgeteilt, dass mein programm so wie ich es jetzt habe zwar läuft aber ihm nicht pass deswegen goto und marke Zitieren
Guybrush Threepwood Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 mach es lieber in der Art: char cAntwort; do { cout<<"Hallo! Soll die Schleife nochmal durchlaufen werden? [J/N]" <<endl<<">"; cin>>cAntwort; } while (cAntwort == 'J' || cAntwort == 'j'); return 0;[/PHP] Zitieren
helby Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 trotzdem könntest du mir einfach sagen wie die marke funktioniert? ich finde nirgens informationen darüber. Auch wenn die als "verpöhnt" gillt. :beagolisc Zitieren
Hexagon Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Hm...einfach da wo er dann hinspringen soll ein "Marke1:" hinschreiben? siehe auch: Sprunganweisung Zitieren
Rondario Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Also mal ganz davon ab, dass du deinem Lehrer mal klarmachen solltest, dass man nie, unter keinen Umständen und überhaupt nicht mit goto's arbeiten will, liefert dir Google mittels "goto c++" schon auf der ersten Seite folgende Treffer: http://tutorial.schornboeck.net/schleifen.htm http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop5_4.html Und nochmal: Wenn du willst, dass irgendwer deinen Code versteht, nutze vernünftige Mittel um das was du willst auszudrücken: Funktionen, Schleifen, etc... Hochsprachen sind kein Assembler wo man auf solche Krücken wie goto angewiesen war... Zitieren
helby Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 Gut, ich habe auf die Marken verzichtet. sondern return(1); benutzt. Jetzt funktioniert die Abfrage nicht, dh. das programm beendet egal ob man ja oder nein hinschreibt. vielleicht findet wer die ursache ich hab keine idee... using namespace std; double dateigroesse ; double uebertragungsrate ; double ausgabezeit; double zeit; double kapazitaet; double ausgabedatei; int zahl; int help=0; void primProg (); void sekProg (); int wiederholen(); int main() { string antwort; antwort = "ja"; do { cout<<"\n "<<endl; cout<<"------------------------------------------------------------------------"<<endl; cout<<"WILLKOMMEN"<<endl; cout<<"------------------------------------------------------------------------"<<endl; cout<<"Wenn Sie die Groesse der Datei und die Uebertragungsrate kennen und \n die Uebertragungsdauer erfahren moechten, drueckken Sie die 1"<<endl; cout<<"\n "<<endl; cout<<"Wenn Sie die Uebertragungsdauer und die Uebertragungsrate kennen und \n die Dateigroesse erfahren moechten, druecken Sie die 2"<<endl; cout<<"\n "<<endl; cout<<"Wenn Sie das Programm beenden moechten, druecken Sie die 3"<<endl; cin>>zahl; switch (zahl) { case 1: primProg(); wiederholen(); break; case 2: sekProg(); wiederholen(); break; default: system( "cls" ); cout<<"Sie haben sich entschieden das Programm zu beenden"<<endl; cout<<"--------------------------------------------------------------"<<endl; cout << "Moechten Sie das Programm wirklich beenden?:\t" <<endl; cin>> antwort; [COLOR="Red"]// Hier wenn man nein eintippt beendet eer trotzdem![/COLOR] system( "cls" ); cout<<"#########################################################################"<<endl; cout<<"Vielen Dank cout<<"#########################################################################"<<endl; //erwartet eine Tasteneingabe std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); } } while(antwort!="ja");[COLOR="Red"] //Programm reagiert alsob ja eingetippt wurde[/COLOR] } //1. Funktion der ersten Berechnung void primProg() { system( "cls" ); cout<<"Sie haben sich entschieden die Uebertragungsdauer zu berechnen"<<endl;... } //2. Funktion der zweiten Berechnung void sekProg() { system( "cls" ); cout<<"Sie haben sich entschieden die Dateigroesse zu berechnen"<<endl;... } //4.Wiederholen? int wiederholen() { cout<<"Moechten Sie nocheinmal etwas berechnen?"<<endl; string antwort; cin>>antwort; if (antwort=="ja") { system( "cls" ); return(1); } else { system( "cls" ); cout<<"Sie haben sich entschieden das Programm zu beenden"<<endl; cout<<"--------------------------------------------------------------"<<endl; cout << "Moechten Sie das Programm wirklich beenden?:\t" <<endl; cin>> antwort; if (antwort == "ja") [COLOR="Red"] //beendet auch wenn man nein eingibt...[/COLOR] {system( "cls" ); cout<<"#########################################################################"<<endl; cout<<"Vielen Dank<<endl; cout<<"#########################################################################"<<endl; //erwartet eine Tasteneingabe std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); exit(0); } else {system( "cls" ); return(1); } } } Zitieren
Klotzkopp Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 helby, gewöhn dir bitte an, Code-Tags zu benutzen, da sonst die Einrückung des Codes verloren geht. Ich habe das hier mal für dich nachgeholt. Deine Einrückung ist allerdings furchtbar, daran solltest du arbeiten. Zitieren
Klotzkopp Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Das Problem kann ich übrigens nicht reproduzieren. Wenn man nicht "ja" eingibt, wird zwar die "Vielen Dank"-Meldung angezeigt (das machst du ja immer), aber das Programm beendet sich nicht. Zitieren
helby Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 gut, ich versuche mehr auf das einrücken zu achten! hab den fehler jetzt aber auch gefunden. jetzt spinnt nur noch meine ausgabe. Wenn ich beenden? nein drücke startet das programm ja neu. allerdings ist der Ausgabe Text beim 2 mal um eine zeile nach unten verrutscht vielleicht findet wer von euch den fehler im quelltext..s.oben beispielbilder sind mithochgeladen 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.