problem z macierza w C, help

0

Witam,
mam nastepujacy problem; jedna z czesci mojego programu jest wprowadzenie przez uzytkownika rozmiaru macierzy i elementow tej macierzy;
nie wiem czemu wywala mi przy elemencie a[3][1] blad; nie wiem co mam zle :/;
jakby ktos sie znal i bylby w stanie mi pomoc to bylbym wdzieczny. Kod umieszczam pod spodem; nie jestem jakims programista wiec pewnie to bedzie glupi blad :D
Z gory serdeczne dzieki

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

int main()
{
int n;
int **m_A;

printf("Wprowadz rozmiar macierzy: ");
scanf("%d",&n);

m_A = malloc(n*n*sizeof(int));
if (m_A==NULL){
    printf("Nie mozna przydzielic tyle pamieci.\n");
    exit(EXIT_FAILURE);
    }

utworz_macierz_A(n, m_A);

return 0;
}

/**************************************************/

void utworz_macierz_A(int n, int **macierz)
{
int i,j;

printf("Podaj elementy macierzy:\n");
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            {
            printf("a[%d][%d]= ", i+1, j+1);
            scanf("%d",&macierz[i][j]);
            }

}

0

Nie orientuje się w C, ale w C++ dynamiczny przydział pamięci dla macierzy wygląda tak:
double *m_A;
m_A=new double
[rozmiar_A];
for(int i=0;i<rozmiar_A;i++)
m_A[i]=new double[rozmiar_A];
Może to ci w czymś pomoże. Pozdrawiam

0

Za pomoca funkcji malloc to wydaje mi sie ze powinno wygladac tak:

int n;
int m_A;
m_A=(int
)malloc(nsizeof(int));
for(int i=0;i<n;i++)
m_A[i]=(int*)malloc(n*sizeof(int));

0

a skąd kompilator ma wiedzieć o jakiej macierzy myślisz pisząc macierz[i][j]?
Pomógłbyś mu gdybyś napisał macierz[j*n+i]

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