01net    Web


Actuellement en ligne : 687 Utilisateurs dont 19 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > C/C++
> Lire des chiffres avec les virgules
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
stiko
  
   
      ?   @     Posté le 19/07/2006 11:19:17  
Voter pour ce message
salut,

j'ai fait un petit programme pour ouvrire un fichier texte qui contient seument des chifres séparées par des points virgules.ce programme lit les chifres omme un string puis il le transforme en entier.mais quand les chiffres contioent une virgule, il ne lit pas.
le code est :

#include <algorithm>
#include <fstream>
#include <string>
#include <iostream>
#include <sstream>
#include <functional>
using namespace std;
double nbLigne = 0;
int main()
{
int fonction();
double *tab=new double [100];
ifstream fichier( "newBase.txt" );
int nbElement = 0;
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
string ligne; // variable contenant chaque ligne lue
while ( getline( fichier, ligne,';') )
{
//transformation de string en double
stringstream s;
s << ligne;
double n;
s >> n;

tab[nbElement]=n;
nbElement++;

}
}
//for (int i=0;i<nbElement;i++)
//cout <<"tab["<<i<<"]=" <<tab <<endl;

cout <<"le nombre des elements =" <<nbElement<<endl;
delete [] tab;
}

le fichier newbase contient les chiffres suivanr:


3,1; 0,076; -0,36; -0,014; 0,026 ;


merci pour les réponses.
gizmo
  emmerdeur sponsorisé.
  :-)
      ?   @     Posté le 19/07/2006 11:28:23  
Voter pour ce message
la virgule n'est pas considérée comme un séparateur entier/décimal valide, c'est le point qui fait fonction en anglais. Tu dois donc soit changer ton fichier d'input, soit transformer tes virgules en point avant d'assigner le double.
esselfe
  Je calcul donc je suis relativ
  :-)
      ?   @     Posté le 11/08/2006 17:30:36  
Voter pour ce message
Insère une condition dans une loop qui analyse le texte 'char' par 'char'..
Il est vrai que tu devrais mieux changer les virgules par des points sauf si la linguistique du texte est importante, car les librairies utilisent les points je crois dans la fonction atof() >*alpha to float*< ou atod() [si elle existe...].

En fait tu vois, on peut isoler avec des rep`res de positions de lecture des valeurs convertissables de 'char' (tri ';') à 'char[taille_du_mot] (et l`un algo de remplacement si t'as besoin de les remplacer ces virgules >') amuse-toi' à 'double'...

#include <fstream>
using namespace std;

int main(){
char c, *texte;
int bloc0 =0, bloc1 =0; // position de début et de fin d'1 'double'.
ifstream ifichier('leTexte.mee',ios::in);

// prendre la taille du fichier comme délimitateur de loop
int taille, pos =0;
ifichier.seekg(0, ios::end);
taille =ifichier.tellg();
seekg(0, ios::beg);
texte =new char[taille];

// loop
while (pos != taille){
``c =ifichier.getc();
// ou ifichier.getc(c);
// ou je ne sais plus trop, Google est ton ami.. >> je
// n'ai qu'un ordi public sans compilo..
``if (c != ';'){
````texte[pos] =c;
``}
``++pos;
}
delete []texte

[...]


a++
:fume:


-->Message édité par esselfe le 11/08/2006 17:36:17<--
-------
vive Linux!
<     1       >

01net > Forum de 01net > Programmation et développement > C/C++
> Lire des chiffres avec les virgules

Aller à :

Page générée en : 0.333s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Gestion EBP Compta Classic
Gérez efficacement votre trésorerie, la saisie des écritures comptables, la TVA, le Bilan, ...
Jeux
Nouveauté : Testez votre agilité cérébrale dans 45 activités ludiques dont 15 entièrement nouvelles.