Lecture fichier texte et mettre le resulat dans un tableau.

walidaydi Messages postés 2 Date d'inscription vendredi 29 décembre 2000 Statut Membre Dernière intervention 7 février 2011 - 7 févr. 2011 à 07:40
walidaydi Messages postés 2 Date d'inscription vendredi 29 décembre 2000 Statut Membre Dernière intervention 7 février 2011 - 7 févr. 2011 à 12:08
bonjour,
j'ai un fichier texte qui contient des nombres réels séparés par un espace.
comme ca: 124.31611622563169 161.22159929707496 186.96164089688813 ....
125.70645174035170 163.09017182166940 189.14934651545619 ....
j'ai développé ce code afin de lire le fichier texte et de mettre chaque nombre dans une case du tableau xoff pour utilisation ultérieur.
Puis apres des calculs que je vais faire sur ce tableau (xoff) je vais l'enregistrer de nouveau dans un fichier out.
lors de l'affichage de xoff j'ai obtenu des résultats bizarre.
je sais pas d'où vient l'erreur.

peut on m'aider s'il vous plait.
Merci.

#include 
#include <string>
#include <fstream>
#include <vector>
#include <cstdlib>
 
using namespace std;
 
int main()
{
ofstream ofs("Out.txt");
vector <double> xoff;// tableau dont chaque case va contenir un nombre
ifstream ifs("test2.txt");
double x;
while (ifs >>x)
{
 xoff.push_back(x);

printf("xoff[%d]=%.14lf\n",xoff[i]);
 i++;
}
return 0;
}

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 févr. 2011 à 11:17
Je ne vois pas d'erreur ou de comportements étranges. Je l'ai testé et tout semble allez bien. Peux-tu préciser ce qui te gêne ?

Quelques petites conseils:
- Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Utilise les itérateurs quand tu le peux. Évite les reliquats du C (du genre printf). Même si ici, le printf ne me gêne pas (pour débugger).

#include 
#include <fstream>
#include <vector>
#include 

int main()
{
  typedef std::vector<double>::const_iterator iter;
  std::vector<double> xoff;
  std::ifstream ifs("test2.txt");
  double x;
  while (ifs >> x)
    xoff.push_back(x);

  int i = 0;
  for (iter it = xoff.begin(); it != xoff.end(); ++it)
  {
    std::cout << "A xoff[" << i << "]=" << std::setprecision(17)
      << *it << std::endl; // Dégage les 0 inutiles :)
    printf("B xoff[%d]=%.14lf\n", *it);
    ++i;
  }

  return 0;
}


Testé avec le fichier suivant:

124.31611622563169 161.22159929707496 186.96164089688813
125.70645174035170 163.09017182166940 189.14934651545619


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
walidaydi Messages postés 2 Date d'inscription vendredi 29 décembre 2000 Statut Membre Dernière intervention 7 février 2011
7 févr. 2011 à 12:08
Merci pour les conseils precieux.
oui le pb a été résolus.
0
Rejoignez-nous