[C] Preencher uma matriz.

OMFG!!!!

e não é que deu...

Ou seja, por alguma razão com uma variavel+1 como tamanho do array, passa-se e com um numero fixo funciona...

Twilight zone ou apenas ignorância eis a questão, o que é certo é que funciona, obrigado.
 
Tens mesmo de reservar memória para o array, é mta estranho ke tenhas conseguido compilar mas... Agora tens é de usar o calloc ou malloc e reservares memória para o array se for de tamanho variável, se não for poes sempre com o meu espaço, bem tenhu de me ir de fds para a terriola.
Cumprimentos..
 
Fonix, bou ter de ficar encalhado por estes lados...Pontiac substitui por este código onde reservas o espaço para o array

int **mapa_distancias;

mapa_distancias=(int **)calloc(file_controlo.total_produtores+2,sizeof(int*));
for(i=0;i<file_controlo.total_produtores+2;i++)
mapa_distancias=(int *)calloc(file_controlo.total_produtores+2,sizeof(int));

E já deve ficar bom, espero eu :)
 
Última edição:
Sim. tb funcionou.

O problema é que não percebo bem o que o teu codigo faz.

Porque é que usaste um ponteiro para ponteiros?

Não percebo esta linha:

mapa_distancias=(int **)calloc(file_controlo.total_produtores+1,sizeof(int*));

e porque no sizeof tens *int em vez de *mapa_distancias? é a mesma coisa?
 
Vai aki http://www.cplusplus.com/ref/cstdlib/calloc.html, ve la se ajuda, a lógica é ke vais alocando a memoria para cada posição por ordem, ora começas por alocar a linha com as varias posições (file_controlo.total_produtores+2) e dps no ciclo for voltas a alocar mas para as colunas de cada posição da linha, axo ke é assim ke se explica... Só eskeci-me de te dizer ke convém libertares a memória com o void free (void *p); qd ja nao precisares dele, no entanto como o prog é rápido ele qd acaba liberta automaticamente...ou seja terias de colocar:

for(i=0;i<file_controlo.total_produtores+2;i++)
free(mapa_distancias);

free(mapa_distancias);
 
Back
Topo