Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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.

Aber das is doch ne Ifschleife?:confused:

if(a==1)

{

break;

}

ooooooooooooooooooooooooooooooooooooooooooooder?

MfG

Bully:D

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

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

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!

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

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

Hallo,

Falls es dich noch interessiert. Wenn du das Programm beenden möchtest gibt:

exit(0);

ein.

Viel Spaß mit dem Programm.

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

Die selbe frage gilt für EXIT!

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

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.

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

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:( :( :( :( :( :(

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

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?

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

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

Also ich arbeite mit dem Visual Studio (also Visual C++)!

Bully, was für einen Compiler hast Du?

Bine

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.