nie wiem czemu nie działa mi transponowanie macierzy. Jeśli ktoś spojrzałby na to byłbym wdzieczny
#include <stdio.h>
#include <stdlib.h>
long int a,b,i,j;
void wczytaj(long int *a, long int *b)
{
long int x,y;
printf("\tWprowadz liczbe kolumn \t");
scanf("%d",&x);
printf("\tWprowadz liczbe wierszy \t");
scanf("%d",&y);
(*a)=x;
(*b)=y;
}
void losuj(long int a, long int b, long int *tab)
{
srand(time(NULL));
long int i,j;
for(i=0;i<=a;i++)
{
for(j=0;j<=b;j++)
{
tab[i*a+j]=rand()%39;
}
}
}
void wyswietl(long int a, long int b, long int *tab)
{
int i,j;
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
{
printf("\t%.3d ", tab[i*a+j]);
}
printf("\t\n");
}
}
void odstep()
{
printf("\n");
}
void transponowanie( long int a,long int b, long int *tab, long int *tab2)
{
int i,j;
// macierz po transponowaniu
printf("\n");
for(i=0;i<=a-1;i++){
printf("");
for(j=0;j<=b-1;j++){
tab2[j+a*i]=tab[i+b*j];
}
}
for(i=0;i<=b-1;i++){
printf("\n");
for(j=0;j<=a-1;j++){
printf("%.3d ", tab2[a*i+j]);
}
}
getch();
}
int main(){
naglowek();
wczytaj(&a,&b);
odstep();
long int tab[a][b];
long int tab2[b][a];
losuj(a,b,&tab[0][0]);
wyswietl(a,b,&tab[0][0]);
odstep();
wyswietl(a,b,&tab[0][0]);
transponowanie(a,b,&tab[0][0],&tab2[0][0]);
return 0;
}