while Bedingung (Aufgabenstellung)
-
Hallo

In einem Buch (C++ Primer 4. Auflage) ist folgender Code (zum Thema 'Die break Anweisung'):
string inBuf while (cin >> inBuf && !inBuf.empty()) { switch(inBuf[0]) { case '-': // Bis zur erstelen Leerstelle verarbeiten for(string::size_type ix = 1; ix != inBuf.size(); ++ix) { if(inBuf[ix] == ' ') break; } break; case '+': // ... } }Was da passiert und die break-Anweisung tut, ist mir völlig verständlich. Was mir jedoch Schwierigkeiten bereitet ist die darauf folgende Aufgabe (Übung):
Übung 6.19: Das erste Programm in diesem Abschnitt könnte kürzer geschrieben werden. Tatsächlich liesse sich seine Aktion vollständig in die Bedingung der while-Schleife einbetten. Schreiben Sie die Schleife so um, dass sie einen leeren Rumpf aufweist und in der Bedingung nach dem Element sucht.
Nun, die Aufgabe ist zwar verständlich, aber ich wüsste nicht wie ich in der Bedingung den Indizes (bsp. ix) inkrementieren soll

Ich bin für jede Hilfe sehr dankbar!

Vielen Dank.LEARNcpp
-
LEARNcpp schrieb:
Was da passiert und die break-Anweisung tut, ist mir völlig verständlich.
Nicht schlecht. Ich verstehe den Code nicht.
for(string::size_type ix = 1; ix != inBuf.size(); ++ix) { if(inBuf[ix] == ' ') break; }Die Schleife terminiert, weil ein Leerzeichen gefunden wird oder der String zu Ende ist. Keine der Alternativen hat irgendeinen Einfluss auf den Rest das Programms und innerhalb der Schleife passiert auch nichts beobachtbares.
Damit ist sie aber völlig überflüssig.
-
@camper
Ja das ist mir bewusst. Es geht aber darum den Code, wie dieser bisher vorliegt, auf die Bedingung der while-Schleife zu kürzen/beschränken.Gruss,
LEARNcpp
-
http://www.cplusplus.com/reference/string/string/begin/
http://www.cplusplus.com/reference/string/string/end/
http://www.cplusplus.com/reference/algorithm/find/
-
Wie camper bereits gesagt hat, hat die innere Schleife überhaupt keinen Effekt auf den Rest des Programms. Wenn die anderen Teile des switch-Statements genauso aufgebaut sind, kann man das ganze switch ersatzlos streichen.
-
KÖNNERcpp schrieb:
http://www.cplusplus.com/reference/string/string/begin/
http://www.cplusplus.com/reference/string/string/end/
http://www.cplusplus.com/reference/algorithm/find/Mir sind Iteratoren bekannt und dass en Zugriff darüber eher zu empfehlen ist. Es geht aber um diese eine Aufgabenstellung.

Danke.
-
blubb[++i];
-
Michael E. schrieb:
Wie camper bereits gesagt hat, hat die innere Schleife überhaupt keinen Effekt auf den Rest des Programms. Wenn die anderen Teile des switch-Statements genauso aufgebaut sind, kann man das ganze switch ersatzlos streichen.
Es gibt keine weiteren Teile. Mir ging es eigendlich darum, dass es in der Aufgabenstellung heisst, man solle in der Bedingung nach dem Element suchen

Viele Dank.
-
cooky451 schrieb:
blubb[++i];Super. Vielen Dank cooky
