For-Schleife verlassen < Sonstiges < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:06 Di 15.01.2013 | Autor: | ralfr |
Hallo,
ich beschäftige mich momentan mit der Programmiersprache C.
Meine Frage ist nun: ich habe in einer for-schleife mehrere if-Bedingungen geschachtelt. Wenn dort eine bestimmte If-Bedingung nicht erfüllt ist, soll die For-Schleife frühzeitig verlassen werden. Ist soetwas überhaupt möglich? Und wenn ja, wie mache ich das?
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:11 Di 15.01.2013 | Autor: | leduart |
Hallo
in den meisten Sprachen gibt es exit oder aehnliches um eine Schleife zu verlassen, sonst kannst du bei i=1 to n wohl einfach i=n setzen
da ich kein C spreche nur als Mitteilung.
Gruss leduart
|
|
|
|
|
Hallo,
wenn ich mich noch recht entsinne, sollte break; das gewünschte leisten.
Es ist bei mir schon lange her, dass ich programmiert habe, und damals habe ich auch eher Sprachen wie TurboPASCAL und PowerBASIC bevorzugt (war alles noch unter MS-DOS...), aber: eine for-Schleife macht man doch sinnvollerweise nur dann, wenn die Anzahl der Schleifendurchläufe vorher klar ist. Sonst würde sich eher eine while-Struktur anbieten, da kann man doch die Abbruchkriterien dann viel sauberer und im Zusammenhang definieren.
Gruß, Diophant
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:27 Di 15.01.2013 | Autor: | ralfr |
> Hallo,
>
> wenn ich mich noch recht entsinne, sollte break; das
> gewünschte leisten.
>
> Es ist bei mir schon lange her, dass ich programmiert habe,
> und damals habe ich auch eher Sprachen wie TurboPASCAL und
> PowerBASIC bevorzugt (war alles noch unter MS-DOS...),
> aber: eine for-Schleife macht man doch sinnvollerweise nur
> dann, wenn die Anzahl der Schleifendurchläufe vorher klar
> ist. Sonst würde sich eher eine while-Struktur anbieten,
> da kann man doch die Abbruchkriterien dann viel sauberer
> und im Zusammenhang definieren.
>
Naja bei for weiß ich am besten wie ich das realisieren kann.
Denn ich habe folgendes Problem:
Eine Funktion soll ein bekanntest Array aus Zeichen dahingehend untersuchen ob es ein Palindrom ist, also ob die Zeichen von vorn das gleiche ergeben wie von hinten gelesen.
also zb otto
nicht beachtet sollen dabei Groß-kleinschreibung, leerzeichen und sonderzeichen.
Deswegen brauch ich ja erstmal eine Schleife die von vorn alles stück für stück durchläuft und in dieser muss dann noch eine sein die von hinten durchläuft und da anhält, wo es ein buchstaben gibt.
danke für den Tipp mit break :) es hat funktioniert
Allerdings komm ich jetzt zum nächsten Problem.
Wenn die for schleife frühzeitig abgebrochen wird, soll etwas anderes von der Funktion zurückgegeben werden, als wenn die for-Schleife komplett durchläuft.
Wie mache ich dies Unterscheidung?
|
|
|
|
|
Hallo,
das sind eben die Probleme, die man sich mit solchen Konstrukten einhandelt.
Normalerweise sollte sich die Laufvariable der for-Schleife nach Beendigung noch auslesen lassen. Je nachdem, wie du sie hochzählst, sollte sie entweder die Anzahl n der Schleifendurchläufe enthalten oder n+1. Wenn der Wert aber niedriger ist, würde das bedeuten, dass die Schleife vorzeitig beendet wurde. In Pascal hätte das funktioniert, von daher müsste es eigentzlich imnguten alten ANSI-C auch klappen.
Gruß, Diophant
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:47 Di 15.01.2013 | Autor: | leduart |
Hallo
ist in deiner definition o&%t.%t = O -- ein Palindrom?
dann ist eine for Schleife mit oder ohne break doch keine gute Loesung?
eine for Schleife koennte natuerlich erstmal alles stoerende beseitigen und Grossbuchstaben durch kleine ersetzen
gruss leduart
|
|
|
|
|
Hallo!
Wenn mit der for-schleife auch die Funktion sofort abgebrochen werden soll, kannst du auch gleich ein "return" statt einem "break" nehmen.
Ansonsten würde ich mich nicht zu sehr drauf versteifen, daß ein break böse ist, und daß man unbedingt zu ner while-loop wechseln muß. Grade bei komplizierteren Dingen ist ein break schnell mal einfacher einzubauen, aber auch einfacher zu verstehen. Und das ist so ziemlich das wichtigste: daß man den code auch versteht!
|
|
|
|