Lecture d'une matrice à partir d'un fichier texte

Fermé
Kenx9 Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 10 avril 2016 - 31 mars 2016 à 13:19
Kenx9 Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 10 avril 2016 - 2 avril 2016 à 17:10
Bonjour,
j'ai essayé de lire une matrice à partir d'un fichier texte afin de créer une autre matrice que je devrais la stocker par suite dans un autre fichier texte,le problème que chaque fois j'essaye de lire les valeurs j'obtiens que des zéros (j'ai initialisé la matrice à 0 auparavant)
La lecture s'effectue avec succès pour des valeurs dans le même fichier texte qui existent avant la matrice mais non pour la matrice elle même
voila mon bout de code:
for(i=0;i<e;i++)
 {
	 fscanf(input,"%d %d %d\n",&src,&dest,&poids);
	 M[src-1][dest-1]=poids; 
 }     	   
    for(i=0,j=0;i<n,j<n;i++,j++)
	printf("%d ",M[i][j]);


Voici l'input:
1 2 5
1 3 4
2 5 1
3 4 1
3 5 1
4 6 3
5 6 2
5 7 6
6 7 1

Voila la matrice que je dois l'afficher:

0 5 4 0 0 0 0
5 0 0 0 1 0 0
4 0 0 1 1 0 0
0 0 1 0 0 3 0
0 1 1 0 0 2 6
0 0 0 3 2 0 1
0 0 0 0 6 1 0
A voir également:

1 réponse

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 31/03/2016 à 14:46
Salut Kenx9,

Ta boucle
for(i=0,j=0;i<n,j<n;i++,j++)
ne va pas. A chaque itération i et j sont tous deux incrémentés simultanément et du coup, tu n'affiches que M[0][0], M[1][1], M[2][2], ... c'est à dire la diagonale de ton tableau (qui n'est composée que de zéros).

Tu dois faire une boucle for pour afficher les lignes, qui imbrique une autre boucle for qui, pour chaque ligne, affiche chaque colonne du tableau (en gérant le retour à la ligne avant d'afficher les données de la ligne suivante).

Un truc comme :

        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                printf("%d ",M[i][j]);
            }
            printf("\n");
        }

Note aussi qu'il n'y a que 9 lignes d'input dans ce que tu indiques comme étant les données de départ, et qu'elles ne représentent qu'une partie des données transposées dans le tableau à obtenir (où il y a au moins 18 cases qui ne sont pas à 0).

Dal
3
Kenx9 Messages postés 3 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 10 avril 2016
2 avril 2016 à 17:10
Je n'ai pas remarqué que jusqu'à maintenant..
Merci beaucoup !! C'a bien marché!
0