Matrizen < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | Ergänzen Sie das folgende Fragment an der mit/*E*/gekennzeichneten Stelle so,
dass die erste und letzte Spalte der 10x10-Matrix mat vertauscht werden.
double mat[10][10]={{1,2,3},{4,5,6},{7,8,9}}, tmp;
int i;
/*E*/ |
Hallo,
Meine erste Frage ist, ob das wirklich eine 10x10 Matrix ist, wenn sie so wie in der Aufgabe aufgefüllt wird.
Wie muss ich mir diese Matrix dann vorstellen?
[mm] \pmat{ 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 }
[/mm]
So würde die meiner Meinung aussehen und das hat dann mit 10x10 nichts mehr zutun oder?
Mein Code sieht dann so aus:
double mat[10][10] = {{1,2,3}{4,5,6}{7,8,9}}, tmp; int i;
for(int i; i<3;i++)
{
tmp = mat[i][0];
mat[i][0] = mat[i][2];
mat[i][2] = tmp;
}
Ist das so richtig?
Grüße
|
|
|
|
Hallo!
Das Array wird als 10x10 deklariert, hat daher diese Größe.
Dadurch, daß weniger Zahlenwerte angegeben werden, wird der Rest des Arrays mit 0 gefüllt.
Also
int i[5]={1,2,3};
wird automatisch zu {1,2,3,0,0}
Auch für dein Array heißt das, daß du ne 10x10-Matrix mit Nullen bekommst, nur die oberen linken 3x3 Felder sind mit den gegebenen Zahlen gefüllt.
Es ist daher die Frage, ob 10x10 Absicht ist, oder ein Fehler. Ich würde mich da knallhart auf die Seite des Compilers stellen. Da steht 10x10, und dann mach ich das auch. Der Widerspruch, den du hier siehst, existiert ja nicht wirklich.
Ansonsten sieht das mit deiner Vertauschung aber gut aus!
|
|
|
|
|
Danke für die Antwort.
Dann würde ich jetzt einfach die Grenzen anders setzen und meine Schleife weiter zählen lassen:
double mat[10][10] = {{1,2,3}{4,5,6}{7,8,9}}, tmp; int i;
for(int i; i<10;i++)
{
tmp = mat[i][0];
mat[i][0] = mat[i][9];
mat[i][9] = tmp;
}
So würde das ganze dann aussehen, wenn ich es richtig verstanden habe
[mm] \pmat{ 0 & 2 & 3 & 0 & 0 & 0 & 0 & 0 & 0 & 1\\ 0 & 5 & 6 & 0 & 0 & 0 & 0 & 0 & 0 & 4 \\ 0 & 8 & 9 & 0 & 0 & 0 & 0 & 0 & 0 & 7 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0}
[/mm]
Grüße
|
|
|
|
|
Hallo!
Ja, genau. Wobei: Es muß
for(i=0...
heißen. i wurde bereits vorher deklariert, und muß hier nicht nochmal deklariert werden (kann aber). Wichtiger ist, daß i vor dem ersten Schleifendurchgang auf 0 gesetzt wird.
|
|
|
|