Tablice podwójne,problem ze wskaźnikami

0

Witam,

bardzo proszę o pomoc w kodzie C,gdyż męczę się nad prostym zadaniem które ma zmienić wszystkie wartości w tablicy na inne już od południa.Co robię nie tak? Próbowałem różnych sposobów.W moim szczególnym przypadku chcę aby wartości się wyzerowały.

Kod:

 
#include<stdio.h>
void change(int x,int y,int (*tab)[4]);

int main()
{
int i,j;
int tab[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} };
int sizey=4;
int sizex=3;

change(sizex,sizey,tab);

for(i=0;i<sizex;i++)
{
    putch('\n');
    for(j=0;j<sizey;j++) printf("%4d",tab[i][j]);
}


return 0;
}
void change(int sizex,int sizey,int (*tab)[4])
{
int i,j,result;
for(i=0,result=1;i<sizex;i++,result++)
{
    for(j=0,result=10;j<sizey;i++,result--) tab[i][j]-=result;
}
}
1

masz złą drugą pętle for w

change() 

masz

for( j=0,result=10; j<sizey; i++,result--) 

a powinno być

 for( j=0,result=10; j<sizey; j++,result--)

Poza tym taka uwaga. Wg mnie masz pomieszane znaczenie zmiennych

int sizey=4;
int sizex=3; 
sizey

mówi o wysokości w wierszach tablicy, a ona jest 3, a nie 4. To samo z sizex

. Mówi ona o szerokości tablicy czyli kolumnach, a jest 3 zamiast 4. Nie wpływa to na program, ale utrudnia czytanie kodu
0

Mistrz! Człowiek od zbyt długiego wpatrywania się w ten kod nie widzi już takich głupich pomyłek... Teraz wszystko śmiga jak trzeba (chociaż było jeszcze parę innych porawek,m.in. w zmiennej result która była podwójnie zmieniana i źle inicjowana ).

Dziękuję Ci bardzo :)

0

I racja,z nazwami size też namieszałem ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1