Lire une matrice à partir d'un fichier texte

Fermé
Da illest Messages postés 1 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 12 février 2009 - 12 févr. 2009 à 13:36
ibtissamguissou Messages postés 1 Date d'inscription lundi 4 janvier 2016 Statut Membre Dernière intervention 4 janvier 2016 - 4 janv. 2016 à 22:10
Bonjour,


je voudrais lire une matrice se trouvant dans un fichier texte et stocker les valeurs dans un tableau à deux dimensions

voici le fichier

45 319 16.875 -100.375 0
46 319 17.250 -100.375 615
47 319 17.625 -100.375 1758
48 319 18.000 -100.375 1180
49 319 18.375 -100.375 835
50 319 18.750 -100.375 1018
51 319 19.125 -100.375 1420
52 319 19.500 -100.375 2494
53 319 19.875 -100.375 2347
54 319 20.250 -100.375 2310
55 319 20.625 -100.375 2146
56 319 21.000 -100.375 2120
45 320 16.875 -100.000 255
46 320 17.250 -100.000 834
47 320 17.625 -100.000 1757
48 320 18.000 -100.000 1048
49 320 18.375 -100.000 1182
50 320 18.750 -100.000 1571
51 320 19.125 -100.000 2315
52 320 19.500 -100.000 2495
53 320 19.875 -100.000 2520
54 320 20.250 -100.000 2401
55 320 20.625 -100.000 2020
56 320 21.000 -100.000 2193
45 321 16.875 -99.625 271
46 321 17.250 -99.625 1009
47 321 17.625 -99.625 1143
48 321 18.000 -99.625 1063
49 321 18.375 -99.625 1763
50 321 18.750 -99.625 2006
51 321 19.125 -99.625 2888
52 321 19.500 -99.625 2681
53 321 19.875 -99.625 2620
54 321 20.250 -99.625 2599
55 321 20.625 -99.625 2376
56 321 21.000 -99.625 1410
45 322 16.875 -99.250 347
46 322 17.250 -99.250 1126
47 322 17.625 -99.250 1365
48 322 18.000 -99.250 1085
49 322 18.375 -99.250 1104
50 322 18.750 -99.250 1637
51 322 19.125 -99.250 2976
52 322 19.500 -99.250 2473
53 322 19.875 -99.250 2438
54 322 20.250 -99.250 2213
55 322 20.625 -99.250 2213
56 322 21.000 -99.250 1816
45 323 16.875 -98.875 616
46 323 17.250 -98.875 1343
47 323 17.625 -98.875 1660
48 323 18.000 -98.875 1266
49 323 18.375 -98.875 1161
50 323 18.750 -98.875 1582
51 323 19.125 -98.875 2482
52 323 19.500 -98.875 2583
53 323 19.875 -98.875 2438
54 323 20.250 -98.875 2079
55 323 20.625 -98.875 1818
56 323 21.000 -98.875 1244
45 324 16.875 -98.500 555
46 324 17.250 -98.500 1885
47 324 17.625 -98.500 1780
48 324 18.000 -98.500 1364
49 324 18.375 -98.500 1259
50 324 18.750 -98.500 1629
51 324 19.125 -98.500 2420
52 324 19.500 -98.500 2714
53 324 19.875 -98.500 2633
54 324 20.250 -98.500 2198
55 324 20.625 -98.500 1589
56 324 21.000 -98.500 985
45 325 16.875 -98.125 1326
46 325 17.250 -98.125 1975
47 325 17.625 -98.125 1708
48 325 18.000 -98.125 1531
49 325 18.375 -98.125 1459
50 325 18.750 -98.125 1762
51 325 19.125 -98.125 2139
52 325 19.500 -98.125 2642
53 325 19.875 -98.125 2471
54 325 20.250 -98.125 1623
55 325 20.625 -98.125 549
56 325 21.000 -98.125 236


ça fait 84 lignes et 5 colonnes

voici mon code en C pour effectuer cette opération

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

float output[83][4];
FILE *ReadInput;
int x,y ;

int main (void)

{


ReadInput = fopen ("point-narr-H-narr_84pts.txt", "r" ) ;

if(ReadInput == NULL)
{
printf("Le fichier n'existe pas");
}

else
{

for (y=0;y<=83;y++)
{
for (x=0;x<=4;x++)
{
fscanf(ReadInput,"%f ",&output[x][y]);
}
}

printf("%f",output[5][0]);

fclose (ReadInput) ;
}


return 1 ;

}

le problème c'est que ça marche pour quelques éléments de la matrice et ça marche pas pour d'autres éléments ( il me donne une fausse valeur )
je ne sais pas pourquoi ça marche pas , alors est que kk41 peut le ressayer sur son ordi et me trouver la faute...
merci
A voir également:

2 réponses

jacinthe87 Messages postés 194 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 15 juillet 2010 3
12 févr. 2009 à 15:07
Essai avec cette fonction:
void RempliMatriceReelle(int c,int l,double **A,FILE *pf)
  {
   int i,j;
   for(i=1;i<=l;i++)
    {
     for(j=1;j<=c;j++)
      {
       fscanf(pf,"%lf",(A[i]+j));
      }
    }
  }


d'ou c=5 et l=83

et pour l'affichage:

void AffichMatriceReelle(int l,int c,double **A)
  {
   int i,j;
   for(i=1;i<=l;i++)
    {
     for(j=1;j<=c;j++)
     {
       printf("%14.0f",(A[i][j]));
       printf("   ");
     }
      printf("\n");
   }
   
  }

2
ibtissamguissou Messages postés 1 Date d'inscription lundi 4 janvier 2016 Statut Membre Dernière intervention 4 janvier 2016
4 janv. 2016 à 22:10
et si les valeurs sont séparées par une virgule?
0
bonjour, svp comment je peux lire une matrice à partir d'un fichier?
0