003
20.02.2004, 23:00 Uhr
Pablo
Supertux (Operator)
|
Ja, ich glaube, du hast das Prinzip solchen Schleifen nicht verstanden.
Du weißt, dass die Anweisungen immer einer nach der anderen ausgeführt werden, sogan wir mal, von oben nach unten. In C, C++, Java und viele andere Sprachen kann man mehrere Anweisungen in einer einzigen Zeile schreiben. In diesem Fall werden die Anwesiungen von links nach rechts ausgeführt.
Wenn eine Anweisung vollständig ausgeführt ist, wird dann unmittelbar die nächste ausgeführt. Es gibt aber manche Fälle, bei denen wir einige Anweisungen wiederholen wollen. Um Nicht 100 Mal die gleichen Anweisungen schreiben zu müssen, gibt es Schleifen, die ausgeführt werden, solange eine Bedingung erfüllt ist. Beispiele gibt es genügend, jedoch ist es manchmal auch schwer Beispiele zu nennen.
Machen wir ein Beispiel für eine While Schleife.
Algorithmus-zählen Gegeben seien 2 natürliche Zahlen a und b, mit a!=b (ungleich) und a<b. Gesucht ist eine Zahl x, für die gilt: a+x-b=0. x muss mindestens 0 sein. Wenn für x==1 die Bedingung nicht erfüllt ist, dann wird x um 1 erhöht. Eine zweite Zahl y gleich null soll dabei um den aktuellen x Wert addiert werden, falls die Bedingnung nicht erfüllt ist. Den Algorithmus habe ich grad erfunden, er berechnet b-a. Und y ist 1+2+3+...+x
In Worten wäre:
Solange a+x-b ungleich null, dann erhöhe x um 1 und y um x
Wie du siehst, ich will 2 Anwisungen ständig wiederholen, nämlich
C++: |
x++; y+=x; // äquivalent zu y=y+x;
|
Wir könnten da eine For-Schleife benutzen, leider wissen wir nicht, wie oft sie ausgeführt werden soll. Also, benutzen wir eine while-Schleife.
In C++
C++: |
#include <iostream> int main() { std::cout << "Geben Sie die Zahl a ein: " << std::endl; int a; std::cin >> a; if (a<0) { std::cout << "a muss eine natürliche Zahl sein." << std::endl; return 1; } int b; std::cin >> b; if (b<0) { std::cout << "b muss eine natürliche Zahl sein." << std::endl; return 1; }
if (b<=a) { std::cout << "a muss kleiner als b sein" << std::endl; return 1; }
// Anfang des Algorithmus int x=0, y=0; while(a+x-b!=0) { x++; y+=x; }
// wenn die while-Schleife terminiert, dann haben wir dir gesuchte Zahl x gefunden. std::cout << "Ergebnis: b-a = " << x << " und die Summe von 1 bis x ist: " << y << std::endl;
return 0; }
|
Naja, ich hoffe damit hast du verstanden, wozu man eine while Schleife auch benutzen kann. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 21.02.2004 um 17:15 Uhr von Pablo editiert. |