Mátrix mellékátló, mutatóval?
függvényt kell írni: paraméterként kapott négyzetes mátrixról eldönti, hogy szimmetrikus-e mellékátlóra?
int Szim(int **mtx, int n){
...
papíron: m.átló ahol-> i+j=n+1
ha i+j>n+1 akkor mtx[i][j] = mtx[i-(j-1)][j-(j-1]?
sehogy se sikerül.
aki tud legyen szíves segítsen.
köszi
amit kérdésbe írtam hülyeség...
eddig:
2db for (i,j) után
if ( (i+j) > (N - 1)){...
amit szernék:
int szime(int **mtx, int n); prototípusú függvény
ami megmondja, hogy a négyzetes mátrix szimmetrikus-e a mellékátlóra.
Ugye ha figyeled a cella és "tükrözése" mozgását, akkor a követezőt figyelheted meg: ha vízszintesen mozgatod, akkor a másik függőlegesen mozog, az ellentétes irányban. Ebből következik hogy a másik koordinátával kell valamit csinálni (kivonni).
A feltétel: tomb[i][j] == tomb[n-j-1][n-i-1]
(hátha valakinek még jól jön ) C ben :
int Szim(int **mtx, int N){
int i, j;
for (i = 0; i < N; ++i){
for (j = 0; j < N; ++j){
if ( (i+j) > (N - 1)){
printf("\n %d,%d =%d, %d", i, j, (*(mtx + i))[j], (*(mtx + (N - j - 1)))[N - i - 1] );
if(! (*(mtx + i))[j] == (*(mtx + (N - j - 1)))[N - i - 1]) return 0;
}
}
}
return 1;
}
1 zárójelpár kimaradt, és így csak a baloldalt negálta.
mos már végleges, tesztelt változat:
int Szim(int **mtx, int N){
int i, j;
for (i = 0; i < N; ++i){
for (j = 0; j < N; ++j){
if ( (i+j) > (N - 1)){
printf("\n %d,%d =%d, %d", i, j, (*(mtx + i))[j], (*(mtx + (N - j - 1)))[N - i - 1]);
if( ! ( (*(mtx + i))[j] == (*(mtx + (N - j - 1)))[N - i - 1] ) ) return 0;
}}}
return 1;
}
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!