Zum Inhalt springen

Break


Gast Tobias Unger

Empfohlene Beiträge

Gast Tobias Unger
Geschrieben

Hallo! Ne Dumme Frage!!:D

Hab noch nicht sonderlich viel Programmiererfahrung mit c++

ICh mache ein Zinseszinsberechungsprogramm/Dahrlehn/Hypothekenberechnun, ect.

Ich wollte mein Programm im ganzen noch ein bischen userfreunlicher gestallten.

Wenn der user einen tippfehler eingibt, soll das Programm automatisch eine fehlermeldung auswerfen , und sich dann beende, damit erst gar keine weiteren missverständnisse auftreten!

Nun funktioniert aber der befehl break nicht:(

Einmal funktioniert er im Quellcode, 2 mal sagt mit der Compiler " Schlüsselwort break ungültig"

Kanns seindas break nur dann funktioniert wenn es innerhalb einer forschleife steht!" Ich schick mal ein kleines stückchen quellcode mit!:D :D :D

Bzw. ein beispiel! Beide folgenden quelltexte stehen in einer funktion die aufgerufen wird(in der selben)

Das obige beispiel geht wunderbar:

for(..;..;..)

{

dumdidum

blabla

if(.....)

{

break;

}

}

In dem zusammenhang funktioniert break nicht:

quellcode

quellcode

dumdidum

cin>>a;

if(a==1)

{

break;

}

Danke für die Tipps:D

Bully

Geschrieben
Original geschrieben von bully2000

In dem zusammenhang funktioniert break nicht:

quellcode

quellcode

dumdidum

cin>>a;

if(a==1)

{

break;

}

Danke für die Tipps:D

Warum sind hier alle zu faul mal die Hilfe des Compilers aufzurufen und nach "break" zu suchen? Da ich deine Faulheit nicht auch noch unterstützen will sag ich nur soviel: Schon mal was von "return" gehört?

Gruß,

StarLord

Geschrieben
Original geschrieben von StarLord

Schon mal was von "return" gehört?

Schon mal was davon gehört, dass nach dem if-Block nicht unbedingt Schluss sein muss? Bisschen freundlicher geht auch ;)

@Bully2000:

Mit break kommst Du nur aus do-, while- und if-Schleifen sowie aus switch-Blöcken raus.

Gast Tobias Unger
Geschrieben

Aber das is doch ne Ifschleife?:confused:

if(a==1)

{

break;

}

ooooooooooooooooooooooooooooooooooooooooooooder?

MfG

Bully:D

Geschrieben

Abgesehen davon, daß ich den Begriff if-Schleife nicht besonders mag, muß man, so denke ich drei Dinge unterscheiden:

break

return

exit

break:

Der C++ Standard besagt, daß break nur in "iteration statements" oder im switch block auftreten darf. Iteration statements sind while, do-while und for-Schleifen. break steigt aus der Schleife aus, beendet sie also. Wenn es noch eine äußere Schleife gibt wird die natürlich weiter ausgeführt.

return:

return springt aus der Funktion heraus, zurück zur aufrufenden Funktion.

exit:

exit ist eine Funktion aus <cstdlib>. exit (rückgabewert) beendet das Programm. Dem Aufrufenden Programm wird als Ergebnis der rückgabewert aus exit übergeben.

Es gibt auch noch abort, dies sollte aber vermieden werden, weil híer das Programm nicht normal beendet wird.

HTH

Jan

Geschrieben
Original geschrieben von Klotzkopp

Schon mal was davon gehört, dass nach dem if-Block nicht unbedingt Schluss sein muss?

Wenn er da abbrechen will? Warum sagst du MIR das? Er wollte eine Antwort und die hatte er auch bekommen.

Original geschrieben von Klotzkopp

Bisschen freundlicher geht auch ;)

Nö, sicher nicht. Am liebsten würd ich nur noch "man MSDN-Hilfe" posten. Ihr Moderatoren müsst echt viel Geduld haben...

Original geschrieben von Klotzkopp

@Bully2000:

Mit break kommst Du nur aus do-, while- und if-Schleifen sowie aus switch-Blöcken raus.

Dass es keine If-Schleifen gibt hast du ja gott sei dank schon bemerkt. Aber wie kommst du darauf dass man eine if-Abfrage mit break beenden kann? Ist das ein neues Cmurksmurks.net Feature? ;-)

Gruß,

StarLord

Geschrieben

Anstelle des if sollte in seiner Aussage ein for stehen. Und da kann man dann mit break raus!

Bine

PS: Und dennoch, auch wenn es Geduld kostet, ist höflichkeit immer wichtig. Ich z.B. habe zu Hause zwar eine Programmierumgebung, aber keine MSDN. Da kann ich darin gar nicht nachschauen!

Geschrieben

Was geht denn hier ab?

Wenn er die Frage nunmal hat, dann kann er sie ja auch stellen, wenn Du sie zu blöd findest, dann mußt Du ja nicht antworten.

Aber das nur am Rande, worum es mir hauptsächlich geht, ist, daß MSDN hier völlig die falsche Adresse ist. Es mag sein, daß man dort eine Antwort findet (vielleicht sogar eine Richtige), aber MSDN ist nicht (ich wiederhole NICHT) die Instanz, die hier die Antworten gibt. Hier muß man im Sprachstandard nachsehen und nirgendwo sonst. Wenn man den nicht bei sich 'rumfliegen hat, dann kann mman auch in einem C++Buch nachsehen, aber nicht bei einem Hersteller von Compilern.

Jan

Geschrieben
Original geschrieben von StarLord

Am liebsten würd ich nur noch "man MSDN-Hilfe" posten.

Tolle Idee! Lasst uns nur noch mit "RTFM" antworten, macht das Forum auch viel übersichtlicher. Jede Frage ist sofort erledigt.

Wenn Du nicht mehr zu sagen hast, dann solltest Du Dir die Antwort vielleicht besser verkneifen, und statt dessen über den Sinn eines solchen Forums nachdenken. Kann ja sein, dass Du den Fragesteller für faul und seine Frage für dämlich hältst - ist ja auch Dein gutes Recht - aber das darfst Du dann bitte für Dich behalten, das ist hier nämlich OffTopic.

Ihr Moderatoren müsst echt viel Geduld haben.
Ich glaube halt fest daran, dass Du es noch einsehen wirst...
Gast Tobias Unger
Geschrieben

OhOh:D

Ich sorge ja mal wieder richtig für trubel!

Danke erstmal an alle die mir geholfen haben!:cool:

Also, eins sei dazu gesagt!

Ich habe leider zur Zeit keine hilfe, und Antworten braucht auch nur der, der das gerne tut:)

Also hier die Frage:D:

Brauche ich für getch() né neue include-Datei?, weil er mir sagt das getch ein nichtdeklarierter bezeichner ist!

MfG!

Danke!

Bully

Geschrieben
Original geschrieben von bully2000

Also hier die Frage:D:

Brauche ich für getch() né neue include-Datei?, weil er mir sagt das getch ein nichtdeklarierter bezeichner ist!

Versuchs mal mit:

#include <conio.h>

Gast Tobias Unger
Geschrieben

Gleich lass ich euch in Ruhe! Einer muss noch!:D

if(....)

{

cout<<" Sie haben das berechnen abgebrochen, das Programm wird nun beendet";

getch();

exit();

}

Wieso macht er erst die pause, und dann beendet sich das Programm aber ohne den Text darüber anzuzeigen!....?

danke!

Bully:D

Geschrieben

Also, ich hab mal folgendes probiert:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
int main()
{
int taste;
cin >> taste;
if(taste==1)
{
cout<<" Sie haben das berechnen abgebrochen, das Programm wird nun beendet";
getch();
exit(0);
}
return 0;
}[/PHP]

...und bei mir wird der Text ausgegeben, wenn ich 1 eingebe.

Gast Tobias Unger
Geschrieben

Genau so wie du hab ich das auch:)!

Bis auf das ich statt taste status als variablenname habe! Sonst ganz genauso:D!

Er verlässt bei mir aber das Programm ohne den TExt anzuzeigen wenn ich ne 1 eingebe:(((

Haste ne Iddee? Worans liegt?

MfG

Tobi

Gast Tobias Unger
Geschrieben

Nach dem ich die 1 eingegeben hab und ENTER drück amcht er ne pause! Drück ich dann nochmal ist er weg*grübel*

Der text wird erst nachdem getch ausgeführt wurde angezeigT! WARUM:( :( :( :( :( :(

Geschrieben

Dein Problem lieg darin das Du noch as im Puffer Speicher hast, was getch() sofort nimmt, und nicht auf eine weitere Eingabe wartet. Du musst also den Puffer leeren. Mache ich immer mit endl!

Sähe dann so aus:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
int main()
{
int taste;
cin >> taste;
if(taste==1)
{
cout<<" Sie haben das berechnen abgebrochen, das Programm wird nun beendet" << endl;
getch();
exit(0);
}
return 0;
}[/PHP]

Dann müßte es klappen!

Bine

Geschrieben
Original geschrieben von bully2000

Nach dem ich die 1 eingegeben hab und ENTER drück amcht er ne pause! Drück ich dann nochmal ist er weg*grübel*

Der text wird erst nachdem getch ausgeführt wurde angezeigT! WARUM:( :( :( :( :( :(

Ich versteh' auch nicht warum es bei Dir nicht geht :confused:

Ich gebe die 1 ein und drücke ENTER...

...dann erscheint der Text...

...ich drücke nochmal ENTER...

...das Fenster schließt sich.

Also, wenn Du das so wie ich hast, ist mir die Sache rätselhaft!

@Woodstock:

Weißt Du warum es bei mir auch ohne endl geht?

Geschrieben
Original geschrieben von Woodstock

Hmm, nicht wirklich. Was benutzt Ihr denn für Compiler. Das Problem ist wirklich das mit dem Puffer. Der wird bei Dir autmatisch gelöscht, so wie es aussieht, und bei Bully nicht!

Bine

Ich hab' den Borland C++Builder

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...