|
|
|
|
Bonjour,
Je cherche désespéremment de l'aide pour afficher un tableau à 2 dimensions ...
Je commence par le déclarer ds le main, ensuite je le remplis à partir d'un fichier (fct charge matrice), et je veux l'afficher (fct affiche matrice)
Ms je n'arrive pas à afficher le tableau ! Je pense que le problème vient de la fonction d'affichage ms je ne comprend pas pourquoi ...
Lorque j'affiche le tableau ds la fonction chargematrice (et que j'enlève affiche matrice) cela marche très bien ...
Si quelqu'un avait la solution ce serait génial ! Merci bcp !
int ChargeMatrice(FILE * fichier, int **T)
{
int nbSommets, i, j ;
/* Verifie que le fichier a bien ete ouvert */
if(fichier == NULL)
{
printf("Erreur lors de l'ouverture du fichier\n") ;
return -1;
}
/* Récupère le nombre de sommets */
fscanf(fichier, "%d\n", &nbSommets) ;
/* Reservation de la place pour le tableau
T = (int **) malloc (nbSommets * sizeof(int *)) ;
for(i=0; i<nbSommets*nbSommets; i++)
T[i] = (int *) malloc (nbSommets * sizeof(int *)) ;
/* Récupère les données à mettre ds le tableau */
for(i=0 ; i<nbSommets ; i++)
for(j=0 ; j<nbSommets ; j++)
{
fscanf(fichier, "%d ", &T[i][j]) ;
if(j == nbSommets -1)
fscanf(fichier, "\n") ;
}
fclose(fichier) ;
return 1;
}
void AfficheMatrice(int **Mat, int nbSommets)
{
int i, j ;
for(i=0 ; i<nbSommets ; i++)
{
for(j=0 ; j<nbSommets ; j++)
printf("%d ", Mat[i][j]) ;
printf("\n") ;
}
}
int main(int argc, char ** argv)
{
int **T ;
/* Ouvre le fichier qui contient les informations à mettre ds le tableau */
FILE * fichier = fopen("matrice.txt", "r") ;
ChargeMatrice(fichier, T) ;
AfficheMatrice(T, nbSommets) ;
return 0 ;
}
Désolée, j'ai voulu enlever quelques trucs pr que cela paraisse plus clair, mais j'en ai enlevé trop ...
|
Je travaille sous dev c++.
|
Le probleme c'est que tu fabrique ta matrice dans Chargematrice mais tu donne une autre matrice non allouee a afichematrice donc ça segfault...
int **ChargeMatrice(FILE * fichier, int **T,int nbSommets)
{
int i, j ;
/* Verifie que le fichier a bien ete ouvert */
if(fichier == NULL)
{
printf("Erreur lors de l'ouverture du fichier\n") ;
return -1;
}
/* Reservation de la place pour le tableau*/
T = (int **) malloc (nbSommets * sizeof(int *)) ;
for(i=0; i<nbSommets; i++)
T[i] = (int *) malloc (nbSommets * sizeof(int)) ;
/* Récupère les données à mettre ds le tableau */
for(i=0 ; i<nbSommets ; i++)
for(j=0 ; j<nbSommets ; j++)
{
fscanf(fichier, "%d",&T[i][j]) ;
}
fclose(fichier) ;
return T;
}
void AfficheMatrice(int **Mat, int nbSommets)
{
int i, j ;
for(i=0 ; i<nbSommets ; i++)
{
for(j=0 ; j<nbSommets ; j++)
printf("%d ",Mat[i][j]) ;
printf("\n") ;
}
}
int main(int argc, char ** argv)
{
int **T ;
int nbSommets ;
/* Ouvre le fichier qui contient les informations à mettre ds le tableau */
FILE * fichier = fopen("matrice.txt", "r") ;
fscanf(fichier, "%d", &nbSommets) ;
T=ChargeMatrice(fichier,T,nbSommets) ;
if(nbSommets == -1)
exit(0) ;
AfficheMatrice(T, nbSommets) ;
return 0 ;
}
|
Je te remercie, j'ai essayé ce que tu m'as dit, ca ne fait plus d'erreur de seg, mais au lieu d'afficher ca :
|