![]() |
C++ (While-Schleife)
Folgenden Code habe ich mir zur Übung der While Schleife angeschaut
#include <iostream> using namespace std; int main(void) { int eingabe; eingabe = -1; while(eingabe != 0) { //Bedigung cin >> eingabe; cout << eingabe * eingabe << endl; //Potenz berechnen } return 0; } Edit: Ich habe mal die Zeile ,, eingabe = -1;" gelöscht und es scheint immer noch alles zu funktionieren und so würde ich es auch verstehen. Aber wieso nun die -1? Und kann ich sie auch weglassen, denn anscheinend funktioniert es.. Meine Frage lautet, weshalb ich aufgefordert bin die variable ,,eingabe" zu initialisieren ? Also mithilfe cin >> eingabe: Es wird doch am Anfang bereits ein fester wert zugeteilt, nämlich -1. Müsste dann nicht die ,,eingabe" immer -1 liefern ? |
Ohne das zuerst eingabe auf -1 gesetzt wird, könnte die while-Schleife gar nicht "betreten" werden, da diese ja nur ausgeführt wird, wenn die eingabe ungleich null ist. Und wenn zuvor gar kein Wert zugewiesen wurde, wird eine Fehlermeldung ausgegeben. Innerhalb der Schleife wird dann einfach eingabe überschrieben.
|
Bitte das nächste mal den zugehörigen Bereich (Programmierung) für deinen Thread nutzen!
|
Also.... Ich habe der eingabe erst einmal einfach einen Wert zugeschrieben - initialisiert (Nach lust und laune, wobei er ungleich Null sein soll). Das brauche ich um überhaupt in die while Schleife reinzukommen, denn es gilt das die Schleife ausgeführt wird, nur wenn die Bedingung erfüllt wird (Hier: eingabe ungleich Null). Bis hier hin richtig?
Was würde den passieren wenn ich in die Schleife mit keiner initalisierten Variable rein gehe ? ,,Und wenn zuvor gar kein Wert zugewiesen wurde, wird eine Fehlermeldung ausgegeben. " Bei mir wird keine Fehlermeldung ausgegeben, warum? Also kann ich davon ausgehen, das eine Fehlermeldung im Normalfall erscheint? Und noch eine Frage! Wenn ich es richtig verstanden habe, wiederholt sich die Schleife exakt ab den While Code immer wieder, bis ebend die Bedingung erfüllt ist. Ist das richtig? Also springt sie sozusagen immer zurück zu while(eingabe != 0) .... |
Deine Überlegungen stimmen, eine while-Schleife lässt sich hiermit sehr gut darstellen:
http://www.teialehrbuch.de/Kostenlos...e_schleife.gif Das mit der Fehlermeldung war ein bisschen voreilig von mir, war gerade im "Python-Modus". Der Teil wird bei C++ ignoriert, wenn eingabe deklariert (die Zeile "int eingabe", hier wird der Speicherplatz für die Variable "eingabe" freigehalten) aber nicht mit einem Wert versehen wird. |
Ich hätte mal eine Frage bzgl. der For Schleife
int feld[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 10 Elemente, mit Initalisierung for(int i = 0; i < 10; ++i) { cout << feld[i] << " "; // Elemente 0 bis 9 ausgeben } Ich verstehe folgenden Punkt nicht for(int i = 0; i < 10; ++i). Das int i=0 irritiert mich. Weshalb wird eine neue Variable deklariert? Und woher weiss diese Variable, dass es sich bei i=0 um feld[0]=1 handelt ? Ich bin etwas verwirrt und hoffe mehr oder weniger das jemand meine Fragestellung versteht. okay ich hab es jetzt doch verstanden. Man könnte auch die Zählvariable i for der for Schleife deklarieren (int i;). Dann w+re i=0 die Startanweisung in der Schleife, wobei das bedeutet das von 0 gezählt wird. In der Mitte steht die Bedingung für die Schleife, damit sie also eintrifft und am Ende steht die Zählart! |
for-Schleife anschaulich dargestellt:
http://www.teialehrbuch.de/Kostenlos...r_schleife.gif Das "i" ist bei einer for-Schleife nur eine "Dummy-Variable", die nach Verlassen der Schleife keine Bedeutung mehr hat. i = 0 gibt den Startpunkt der Schleife, i < 10 heißt, dass die Schleife solange durchlaufen wird, bis i < 10 ist, und i++ (nicht ++i wie in diesem Beispiel) bedeutet, das "i" bei jedem Durchlauf um 1 erhöht wird. Während der Anweisungen innerhalb der Schleife, wird i als Index für das array "feld" verwendet. Damit kann man auf die Einträge zugreifen. Die Nummerierung bei C++-Arrays beginnt bei 0. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.