String außerhalb des Bereiches
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
while (eingabe[anfang] < eingabe.length())
Was soll diese Zeile machen und was macht sie?
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
macht eine forschleife nicht imprinzip dasselbe?
Im Prinzip ja. Dann muss man es aber auch richtig machen.
Das Inkrement (der rechte Teil der for-Anweisung) wird am Ende der Schleife gemacht.
-
@DirkB mit zeile soll von vorne bis zum letzten zeichen iteriert werden.
und mit jedem schleifendurchgang das zeichen an der stelle anfang an t1 drangehängt werden, außer wenn eingab[anfang] == zeichen ist
-
@DirkB meinst du so?
for (; eingabe[anfang] < eingabe.length(); ) { if (eingabe[anfang] == zeichen) { cout << endl; break; } t1 += erster_teil[anfang]; anfang++; } int ende = eingabe.length() - 1; for (; eingabe[ende]>= 0; ) { if (eingabe[ende] == zeichen) { cout << endl; break; } t2 += zweiter_teil[ende]; ende--; }
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
@DirkB mit zeile soll von vorne bis zum letzten zeichen iteriert werden.
und mit jedem schleifendurchgang das zeichen an der stelle anfang an t1 drangehängt werden, außer wenn eingab[anfang] == zeichen istKonkreter! Nur diese Zeile:
while (eingabe[anfang] < eingabe.length())
. Oder genauer noch nur diese Bedingung:eingabe[anfang] < eingabe.length()
Was prüft diese Bedingung? Was soll sie deinem Plan nach prüfen? Was steht tatsächlich da?
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
eingabe[anfang]
Was ist das? Was hat das mit der Länge zu tun?
-
@SeppJ
also übersetzt: führe den anschließenden rumpf so lange durch, bis eingabe[anfang] bis zum letzten zeichen ankommt.eingabe an der stelle anfang muss kleiner sein als die länge des strings
-
@manni66
also meine intention ist es, den gesamten string durchzugehen. einmal von vorne ( das wird dann der erste teil) und einmal von hinten ( das ist dann der zweite teil)
Für denn Fall, dass das eingegeben Zeichen gar nicht im string vorkommt, müsste der erste Teil ja dann durch den gesamten string
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
also meine intention ist es
Danach habe ich nicht gefragt. Dass diese Programmstelle Mist ist sollte dir bereits klar sein. Also noch mal: was ist
eingabe[anfang]
. Welchen Datentyp hat das? Was hat das mit der Länge zu tun.
-
Sieh dir noch mal zum Vergleich die
for
-Schleife aus deinertrimme
-Funktion an: string-element über eine Funktion "trimmen"
-
@Th69 ohhhhh ... da müsse nur anfang < eingabe.length() stehen XD
dankeich versuchs mal
-
@Th69 juhu es funktionier
so ein dummer fehler .... dank danke danke
jetzt muss ich nur noch den zweiten teil nicht verkehrt herum ausgeben lassen
-
@mmm_1482_ sagte in String außerhalb des Bereiches:
anfang++;
Außerdem schau dir wann, wann du 1 zu Anfang addieren willst. Dein erster Vergleich prüfst das zweite Zeichen!
(und warum benutzt du
anfang++
statt++anfang
? Gut, hier macht es keinen Unterschied, da es ein primitiver Typ ist (der Compiler also problemlos optimieren kann) und du den Rückgabewert nicht verwendest)
-
Und deswegen schreibt man heutzutage eigentlich:
for(auto current_char: my_string) // mache irgendwas mit current_char
Okay, eigentlich schreibt man das nicht deswegen so, sondern vor allem weil's viel kürzer und einfacher ist. Aber die Anfängerfreundlichkeit und Fehlerrobustheit nimmt man auch gerne mit
-
@wob
ich verwende es aus gewohnheit immer so. Ich hab gehört, dass es meistens keinen Unterschied macht, darum denke ich gar nicht mehr daran ++variable zu schreiben
-
@SeppJ sieht auf jeden fall schöner aus
ich werde liebe grüße an unseren Prüfer schicken
-
also vielen lieben dank nochmal an alle! IHR rettet mich!