Anfänger Problem mit Schleife
-
Hallo Gemeinde
Ich habe ein Problem mit einer Schleife.
Ich würde gerne folgende Schleife#include "stdafx.h" void main() { int i,j,a[2][2]; for( int i=0; i<2; i++ ) { for(j=0; j<2; j++) { a[i][j] = 2*i+j; } } for( i=0; i<2; i++ ) { for( int j=0; j<2; j++ ) { printf( "%d " , a[i][j] ); } } }welche 0 1 2 3 ausgibt so umschreiben dass Sie
2 1
4 3ausgibt.
Hier mein Ansatz
#include "stdafx.h" void main() { int a[2][2]; int i,j; for(i=2; i<5; i=i+2) { for(j=1; j<3; j++ ) { a[i][j] = i-j; } } for(i=0; i<2; i++) { for(j=0; j<2; j++ ) { printf( "%d " , a[i][j] ); } printf("\n"); } }Da kommen allerdigs Zahlen jenseits von gut und böse raus. Bin über jede Hilfe dankbar.
Gruß martin
-
for(i=2; i<5; i=i+2) { for(j=1; j<3; j++ ) { a[i][j] = i-j; } }Hier zählst du bei i ab 2 und bei j ab 1, verwendest sie aber so als Indizes für a. Dort musst du dann entsprechend mit anderen Werten arbeiten.
for(i=0; i<2; i=i+2) { for(j=0; j<2; j++ ) { a[i][j] = (i*2+2)-j-1; } }
-
Hallo Fellhuhn
Ich muss die schleife doch runterzählen
Die ausgabe sollte2 1
4 3sein.
Wenn ich
#include "stdafx.h" void main() { int a[2][2],i,j; for(i=0; i<2; i=i+2) { for(j=0; j<2; j++) { a[i][j] = (i*2+2)-j-1; } } for(i=0; i<2; i++) { for(j=0; j<2; j++ ) { printf( "%d " , a[i][j] ); } printf("\n"); } }eingebe bekomme ich
1 0
und zwei richtig hohe zahlen...Gruß
-
In der äußeren Schleife erhöhst du i in jedem Schritt um 2, dh du bist nach dem ersten Durchlauf schon außerhalb des arrays.
Entweder du teilst i bevor du es als Index benutzt durch zwei oder du erhöhst i nur um eins und schreibst bei deiner Zuzweisung 2*i statt i.
-
hallo crt
kann dir leider nicht ganz folgen. Ich starte doch bei 0 für den ersten und erhöhe auf 2 für den zweiten durchlauf. passt doch...

gruß martin
-
crt32 hat schon Recht. Bereits beim 2. Durchgang bekommst du eine IndexOutOfRangeException.
Du reservierst zwar so den Speicher "int a[2]", d.h. aber nicht das du auch wieder mit "a[2] = 5" drauf zugreifen kannst, da C++ bei 0 anfängt zu zählen und du somit nur "a[0]" oder "a[1]" nutzen kannst.
-
Hi Freaky
Heißt das also das ich mit meiner Schleife nur bis i=2 gehen kann und
um an das passende Ergebnis zu kommen mit der Schleifenvariablen tricksen muß?Puh hab echt Probleme mit Arrays merke ich gerade...
Gruß Martin
-
Eig. dürftest du nur bis i = 1.
-
Jetzt bin ich total verwirrt... Das die Felder bei [0][0] anfangen ist mir ja soweit bewußt, aber was hat das mit meinen 2 schleifendurchlaufen zu tun. Es ist ja eine 2x2 matrix, so dass ich diese doch brauche.
-
Mit der Schleifenvariablen komme ich hin. Aber mit dem Feld nicht. Auch wenn ich es erweiter auf 3x3 hauts nicht hin.
#include "stdafx.h" void main() { int a[3][3],i,j; for(i=0; i<=2; i=i+2) { for(j=0; j<2; j++) { a[i][j] = i+2-j; } } for(i=0; i<2; i++) { for(j=0; j<2; j++ ) { printf( "%d " , a[i][j] ); } printf("\n"); } }Was mach ich nur falsch? Ich weiß echt nicht wie ich die variable auf ein 2x2 feld sonst anpassen könnte.
Gruß Martin
-
Kann mir niemand weiterhelfen?