dynamiczna tablica dwuwymiarowa problem

0

Witam mam problem z zadaniem takim: uzytkownik wpisuje dwie liczby i to jest nasz wymiar tablicy np 2x3 i potem ma uzupelnic liczbami a nastepnie program wypisuje ta tablice.

#include <malloc.h>
#include <stdio.h>
#include <math.h>

int main ()
{
int **tab;
int a,b, rozmiara,rozmiarb;
scanf ("%d", &rozmiara);
scanf("%d", &rozmiarb);
tab = (int**)malloc(rozmiara*sizeof(int));
for (a=0; a< rozmiara; a++)
{
	printf("podaj liczbe a ");
	scanf("%d",&tab[a]);
	tab[a]=(int*)malloc(rozmiarb*sizeof(int));
for (b=0; b<rozmiarb-1; b++)
{
	printf("podaj liczbe b ");
scanf("%d",&tab[a][b]);
printf("%d",tab [a][b]);
}
}
return 0;
}

co tutaj jest zle? nie mam pojecia jestem zielony w tym temacie i prosze o pomoc

0
  1. tab = (int**)malloc(rozmiarasizeof(int)); // chociaz pewnie rozmiar int i int* jest taki sam
        printf("podaj liczbe a ");
        scanf("%d",&tab[a]);

wtf? co to niby ma robić? wywal te dwie linie
3. printf("podaj liczbe tab[%d][%d] ",a,b); // zamiast: printf("podaj liczbe b ");
4. na końcu powinieneś zwolnić pamięć

reszta wydaje się ok, chyba że czegoś nie zauważyłem

0
#include <malloc.h>
#include <stdio.h>
#include <math.h>

int main( void ) // to jest C, wpisanie main() oznacza tyle co niezliczona ilość argumentów. Chociaż skompiluje się
{
     int** tab;
     int rozmiarA, rozmiarB;

     scanf( "%d", &rozmiarA );
     scanf( "%d", &rozmiarB );
     tab = (int**)malloc( rozmiarA * sizeof( int* ) /*sizeof( int ) != sizeof( int* )*/ );
     
     {
          int i;
          for( i = 0; i < rozmiarA; ++i ) // musimy zaalokować drugi wymiar, do tej pory mieliśmy tylko wskaźniki na inty
               tab[i] = (int*)malloc( rozmiarB * sizeof( int ) ); 
     }

     {
          int a, b;
          for( a = 0; a < rozmiarA; ++a )
               for( b = 0; b < rozmiarB; ++b )
               {
                    printf( "Podaj wartosc dla tab[%d][%d]: ", a, b );
                    scanf( "%d", &tab[a][b] ); // uzupełniamy tablicę przez podane inty
               }
     }

//Wypisanie tablicy
     {
          int a, b;
          for( a = 0; a < rozmiarA; ++a )
          {
               for( b = 0; b < rozmiarB; ++b )
                    printf( "%d ", tab[a][b] );
               printf( "\n" );
          }
     }
     return 0;
}

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