While-Schleife - Brauche dringend hilfe!!!
-
aus:
for (i=1;i<=spalte;i=i+1){ for (k=1;k<=zeile;k=k+1) printf("%3d", i*k);
wird
while (i<spalte){ i=i+1; while (k<zeile){ k=k+1; printf("%3d", i*k);
Jedoch bekomme ich nicht das selbe ergebnis?!!?Wo könnte den sonst der fehler liegen?
-
Eventuell vergessen i und k einen Startwert zu geben?
-
Du hast a (i=1 bzw k=1) nicht vor die Schleife gesetzt, und c (i=i+1 bzw k=k+1) muss ans Ende des Schleifenkörpers.
Ist es wirklich so schwer ein Analogiebeispiel "nachzuspielen"? Du brauchst doch eigentlich nur in Deiner for-Schleife zu schauen was a, b, c und d sind (im Zweifel aufschreiben, deutlich genug getrennt sind sie durch die ";") und das dann in meine while-Vorlage einzufügen. Wenn Du das zuerst für die innere Schleife machst, kannst Du das komplette Ergebnis als "d" für die äussere Schleife nehmen.
-
Startwert habe ich ganz oben vergeben,also daran liegts nicht!
Andere frage,welchen freeware prog würdet ihr für c empfehlen?Habe dev c++ und damit kommt mein pc nicht klar...
-
Also habs mal so verändert wie du es gemeint hast:
int main(void) { int spalte=0; int zeile=0; int i=1; // Startwert bzw a int k=1; // Startwert bzw a printf("Bitte geben sie die Spalte ein: "); scanf("%d", &spalte); printf("Bitte geben sie die Zeilen ein: "); scanf("%d", &zeile); while (i<spalte){ //b while(k<zeile){ //b printf("%3d\n", i*k); //d k=k+1; //c i=i+1; //c } return 0; }
Ich bekomme aber trotzdem nicht das gleiche Ergebnis wie bei der For-schleife...ich bin verzweifelt!!!
-
FAST richtig
Der Schleifenkörper der äusseren Schleife geht bis zum } der inneren Schleife. Du musst nur noch k=k+1 nach } zu notieren statt davor (ausserdem ist das return 0 noch im ersten Schleifenkörper statt nach beiden Schleifen, eine schliessende Klammer fehlt also):
int main(void) { int spalte=0; int zeile=0; int i=1; // Startwert bzw a int k=1; // Startwert bzw a printf("Bitte geben sie die Spalte ein: "); scanf("%d", &spalte); printf("Bitte geben sie die Zeilen ein: "); scanf("%d", &zeile); while (i<spalte){ //b /* Hier fängt "d" der äusseren Schleife an */ while(k<zeile){ //b printf("%3d\n", i*k); //d k=k+1; //c } /* Hier ist "d" der äusseren Schleife zuende */ i=i+1; //c } return 0; }
-
Man sollte schon noch ein k=1 o.ä. vor die innere Schleife schreiben, sonst wird sie nur einmal durchlaufen.
-
Und sowas geht mir durch
Klar, k=1 muss hinter den Kommentar "Hier fängt d ...." und nicht an den Programmanfang
-
k=1; //Statt am Programmanfang oder?? i=1; while (i<spalte){ //b /* Hier fängt "d" der äusseren Schleife an */ while(k<zeile){ //b printf("%3d\n", i*k); //d k=k+1; //c } /* Hier ist "d" der äusseren Schleife zuende */ i=i+1; //c } return 0;
Habs versucht klappt leider immer noch nicht!
-
i=1; //Statt am Anfang while (i<spalte){ //b /* Hier fängt "d" der äusseren Schleife an */ k=1; // //Statt am Anfang while(k<zeile){ //b printf("%3d\n", i*k); //d k=k+1; //c } /* Hier ist "d" der äusseren Schleife zuende */ i=i+1; //c } return 0;
KLappt immernoch nicht..