Problem z przydziałem do dynamicznej tablicy

0

Mógłby mi ktoś pomóc.
Muszę niestety muszę oddać na jutro projekt :-(

nie wiem jak wpisać liczby żeby były takiej kolejności.
tab[0][0] = a
tab[0][1] = b
tab[1][0] = c
tab[1][1] = d

Dzięki z góry za pomoc

 
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i = 0;
int **tab;
int a = 4;
int b = 55;
int c = 666;
int d = 7777;

    printf("a ma adres %p i wartosc %d", &a, a);
    printf("\nb ma adres %p i wartosc %d", &b, b);
    printf("\nc ma adres %p i wartosc %d", &c, c);
    printf("\nd ma adres %p i wartosc %d", &d, d);

    tab = (int**) calloc(2, sizeof(int *));
    for(i=0; i<2; ++i)
    {

        tab[i] = calloc(2, sizeof(int));

    }


    tab[0][0] = a;
    tab[0][1] = b;
    tab[1][0] = c;
    tab[1][1] = d;

    printf("pod tab kryje sie %p", *tab);
    return 0;
}

0
	
         /* [lewy_rozmiar] [prawy_rozmiar] */
	int **tablica; 


        int lewy_rozmiar=2;
        int prawy_rozmiar=2;


	tablica = (int**)malloc(lewy_rozmiar * sizeof(int*)); 
	
	for(int x = 0; x < lewy_rozmiar; x++) 
		tablica[x] = (int*)malloc(prawy_rozmiar * sizeof(int)); 
	

	tablica[0][0] = a;
        tablica[0][1] = b;
	tablica[1][0] = c;
	tablica[1][1] = d;


        /* wyświetlenie przykładowego pola */
        printf("%d",tablica[1][0]);

	/* pozniej czyszczenie pamieci: */
	for(int x = 0; x < prawy_rozmiar ; x++) 
	free(tablica[x]); 
	free(tablica); 
0
#include <stdio.h>
#include <stdlib.h> //malloc
//#include "macierz.h"

struct macierz
{

    int liczbawierszy;
    int liczbakolumn;
    int *adr_tablicy;

};


// dlaczego ampersant nie dzia³a
void parametrymacierzy(struct macierz *dane)
{
static int licznikmacierzy = 1;
int lwierszy;
int lkolumn;

    printf("podaj liczbe wierszy %i macierzy ", licznikmacierzy);
    scanf("%i", &lwierszy);
    printf("podaj liczbe kolumn %i macierzy ", licznikmacierzy);
    scanf("%i", &lkolumn);
    dane->liczbakolumn = lkolumn;
    dane->liczbawierszy = lwierszy;
    ++licznikmacierzy;

}


void uzupelnijmacierz(struct macierz *dane)
{
static int liczikmacierzuzupelnianej = 1;
int x, y;
int **tablica;
tablica = (int**)malloc(dane->liczbakolumn * sizeof(int*));

for(x = 0; x < dane->liczbakolumn; x++)
                tablica[x] = (int*) (dane->liczbawierszy * sizeof(int));





    for(x = 0; x < dane->liczbakolumn; ++x)
    {

        for(y = 0; y < dane->liczbawierszy; ++y)
        {

            printf("podaj teraz wyraz macierzy tablica[%d][%d]", x, y);
            scanf("%d", tablica[x][y]);

        }

    }


    ++liczikmacierzuzupelnianej;
    dane->adr_tablicy = tablica;
}



int main()
{

struct macierz *a1;
a1 = malloc(sizeof(struct macierz));
//struct macierz *a2;
//a2 = malloc(sizeof(struct macierz));

    parametrymacierzy(a1);
   // parametrymacierzy(a2);

    a1.adr_tablicy[0][0] = 10;



return 0;
}

program zawiera bład w linijce scanf("%d", tablica[x][y]);
Ost rzecz i bede bardzo very happy

Dzięki z GÓRY

0

Nikomu nic do głowy nie przychodzi?

0
scanf("%d",tablica[indeks_lewej_kolumny]+indeks_prawej_kolumny) 
1

A nie prościej tak?

scanf("%d", &tablica[x][y]);

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