005
27.06.2007, 20:46 Uhr
jack26
|
Ich hab wohl bei der Aufgabenbeschreibung ein paar Verständnisprobleme mit eingebaut, dafür will ich mich entschuldigen ;-)
Danke für eure Hilfen.
Hier is der nun Funktionierende Code:
C++: |
#include <stdio.h>
#define Z 4
void MatrixSpiegelung(int (*matrix)[Z]) { int puffer, i, j;
for(i=0; i<Z; i++) { for(j=0; j<Z; j++) { if(i<j) {
if(matrix[i][j]>=0 && matrix[j][i]>=0){ puffer=matrix[i][j]; matrix[i][j]=matrix[j][i]; matrix[j][i]=puffer; } } printf("%6i",matrix[i][j]); } printf("\n\n"); } }
int main(void) { int tab[Z][Z] = {{12,0,15,1}, {-13,3,10,8}, {2,16,5,11}, {7,0,-2,14}};
MatrixSpiegelung(tab);
}
|
Die entscheidende Zeile war wie gesagt folgende:
if(matrix[i][j]>=0 && matrix[j][i]>=0)
So wird genau das gemacht was ich wollte, es wird überprüft, ob beide gegenüberliegenden Seiten Positiv oder eben gleich 0 sind. Ich hatte da wohl selbst ein Verständnisproblem, da ich den ODER Fall, also dass es für eine Spiegelung eben auch schon ausreicht, wenn nur eins der beiden Elemente 0 ist, extra aufgeführt. Dies wird aber ja durch >=0 auch mitberücksichtigt. |