DRC Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Oi ppl!Estou a fazer o trabalho final de programação e estou com o problema para alocar memoria para um matriz nXn/*Função que aloca memoria e inicia o jogo avançado*/void avancado(){ char **sodu; int i; *sodu=(char *)malloc(9*sizeof(char)); //*sodu=(char *)calloc(9,sizeof(char)); if(*sodu==NULL){ printf(ERRO2);//não foi possível alocar memoria exit(0); } for(i=0;i<9;i++){ *sodu=(char *)malloc(9*sizeof(char)); //sodu=(char *)calloc(9,sizeof(char)); if (sodu==NULL){ printf(ERRO2);//não foi possível alocar memoria exit(0); } } inic(sodu,9);//inicializa a matriz numero_al(sodu,9,10);//inserir 10 números aleatórios jogar(sodu,9);//inicia o jogo for (i=0;i<9;i++){ free(sodu);//libertar memoria } free(sodu);//libertar memoria}Esta é a função k estou a utilizar, ao compilar não da erros nem avisos, mas ao execotar esta função o programa da“O sodu.exe encontrou um problema e vai ser encerrado. Lamentamos qualquer inconveniente que isto lhe possa causar.” É verdade estou a utilizar o dev-c++;Alguém m pode ajudar?Obrigado pela vossa atenção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Barros Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 (editado) amigo,se isso ajudar, tá aqui um programa que aloca uma matriz dinamica que eu já tinha feito... este programa é pra saber se a matriz é identidade ou não, mas usa alocação dinamica...#include <stdio.h> int main() { int **matriz,n,i,j,flag=0; int cont; printf("A MATRIZ é IDENTIDADE ? \n\n\n"); printf("Ordem da matriz quadrada: "); scanf("%d",&n); //ALOCANDO: matriz=(int**)malloc(n*sizeof(int)); for(cont=0; cont<n; cont++) matriz[cont]=(int*)malloc(n*sizeof(int)); // FIM DA ALOCAÇÃO for(i=0; i<n; i++) // lendo os dados for(j=0; j<n;j++) { printf("\nMATRIZ[%d][%d]= ",i,j); scanf("%d",&matriz[i][j]); } for(i=0; i<n; i++) { for(j=0; j<n;j++) { if((i==j)&&(matriz[i][j]!=1)) flag=1; if((i!=j)&&(matriz[i][j]!=0)) flag=1; } } for(i=0; i<n;i++) free(matriz[i]); if(flag==1) printf("\n\nA MATRIZ não é IDENTIDADE!!!"); else printf("\n\nA MATRIZ é IDENTIDADE!!!"); getch(); return 0; }TAMBÉM USO O DEV-C++, mas no WINDOWS.espero ter ajudado. Editado Maio 30, 2007 por Rafael Barros Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DRC Postado Maio 30, 2007 Autor Denunciar Share Postado Maio 30, 2007 Obrigado Rafael Barros, ajudou e muito já esta alocar e a libertar memoria sm s passar!! :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
DRC
Oi ppl!
Estou a fazer o trabalho final de programação e estou com o problema para alocar memoria para um matriz nXn
/*Função que aloca memoria e inicia o jogo avançado*/
void avancado(){
char **sodu;
int i;
*sodu=(char *)malloc(9*sizeof(char));
//*sodu=(char *)calloc(9,sizeof(char));
if(*sodu==NULL){
printf(ERRO2);//não foi possível alocar memoria
exit(0);
}
for(i=0;i<9;i++){
*sodu=(char *)malloc(9*sizeof(char));
//sodu=(char *)calloc(9,sizeof(char));
if (sodu==NULL){
printf(ERRO2);//não foi possível alocar memoria
exit(0);
}
}
inic(sodu,9);//inicializa a matriz
numero_al(sodu,9,10);//inserir 10 números aleatórios
jogar(sodu,9);//inicia o jogo
for (i=0;i<9;i++){
free(sodu);//libertar memoria
}
free(sodu);//libertar memoria
}
Esta é a função k estou a utilizar, ao compilar não da erros nem avisos, mas ao execotar esta função o programa da
“O sodu.exe encontrou um problema e vai ser encerrado. Lamentamos qualquer inconveniente que isto lhe possa causar.”
É verdade estou a utilizar o dev-c++;
Alguém m pode ajudar?
Obrigado pela vossa atenção.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.