begin process at 2012 05 30 03:08:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Lire dans un fichier texte ligne par ligne et mot par mot


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lire dans un fichier texte ligne par ligne et mot par mot

vendredi 4 novembre 2005 à 17:48:00 | Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Bonsoir,

Je suis debutant, je dois faire un script qui va lire un fichier texte pour ensuite trouver quel personne a la meilleur, plus basse note et de faire la moyenne de la classe.

Le format du fichier texte est la suivante (data.txt):

christophe      15
marc            7
olivier         13
stan            14.7
stephanie       14
julie           15
andrew          9
suzanne         15.25


Mon fichier cpp ressemble à ca(basic_stats.cpp):

<code>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <fstream>

using namespace std;
using std::cin;
using std::cout;
using std::endl;
using std::string;


int main(void)
{
    string nom[8]; //8 pour le nombre de personne
    int i = 0;
    std::ifstream data;
    fichier.open("data.txt","r",stdin); //lecture du fichier
  
    while (!data.eof());
    do
    {
    cout << nom[i] <<endl;
    ++i;
    }
    return 0;
}
</code>


J'ai essayé de faire ca avec quelques script que j'ai vu mais ca ne passe pas.  

L'erreur est la suivante:

$ make basic_stats
g++ -W -Wall -Werror -O2    basic_stats.cpp   -o basic_stats
basic_stats.cpp: In function `int main()':
basic_stats.cpp:28: error: `fichier' undeclared (first use this function)
basic_stats.cpp:28: error: (Each undeclared identifier is reported only once
   for each function it appears in.)
basic_stats.cpp:28: error: syntax error before `)' token
basic_stats.cpp:36: error: syntax error before `return'
make: *** [basic_stats] Error 1


Voila, merci pour votre aide.
vendredi 4 novembre 2005 à 20:35:26 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Je rectifie :

le fichier est passé en entrée standart avec " < data.text" lors de l'execution.

Avec de l'aide d'un ami, j'ai pu lire et affiche le dernier nombre (15.25)avec environ 7 sauts de ligne. Or je voudrai prendre en variable les noms et les notes de tout le monde???

voila ce que ressemble mon script:

<code>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <fstream>
#include <string>

using namespace std;
using std::cin;
using std::cout;
using std::endl;
using std::string;


int main(void)
{
    string nom[8];  
    int i = 0;  
    string bop;    

    while (cin >> bop)
    {nom[i]=bop;

    }

    while (i<8)
    {
     cout <<  nom[i] << endl;
     ++i;
    }
    return 0;
}
</code>


Voila, help please :-)
vendredi 4 novembre 2005 à 22:33:35 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

Hylvenir

Bonjour,
alors un petit coup de main pour l'effort ;)

#include <iostream>
//#include <stdio.h>  // inutile
//#include <math.h>   // inutile ou #include <cmath>
//#include <fstream> // inutle si tu n'ouvres pas de fichier
#include <string>

using namespace std;
//using std::cin;
//using std::cout;
//using std::endl;
//using std::string;
// Tous les using sont inutiles si tu "ouvres" tout le namespace
// en faisant le using namespace std; comme tu le fais


int main(void)
{
    string nom[8];  
    int i = 0;        // il manquait un ;
//    string bop;    // ne sert à rien puisque tu as déjà le tableau
// par contre où sont les notes ?
double notes[8];
    // à éviter les contantes en dures...  (genre le 8)
   // au pire utilise des vector

//    while (cin >> bop)
// il faut lire le nom puis la note l'un après l'autre sinon
// si tu vas avoir des erreurs de lecture et pas mal de chaine vide
    while( cin >> nom[i] >> notes[i] )
    {
//        nom[i]=bop;
//       ne sert pas
       ++i; 
          // il suffit de changer l'index où tu vas placer
          // le nouveau nom et la nouvelle note
         // il faudrait controler le dépassement sur +8 valeurs
    }

/*
    while (i<8)
    {
     cout <<  nom[i] << endl;
     ++i;
    }
*/
// pk pas une simple boucle ?
for (int i = 0; i < 8; ++i )
    cout << nom[i] << " : " << notes[i] << endl;

// remarque : ce serait de distinguer le i contenant
// le nombre de lecture du i pour la boucle.

//    return 0;
    // le return 0; est inutile en C++ pour le main
}

Ma participation à la saturation du net:
http://hylvenir.free.fr
vendredi 4 novembre 2005 à 23:35:47 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Merci pour ton aide, ca marche impec.
Mais c'est juste une partie de mon travail helas. je devrai m'en sortir ( je pense :-) ).

Merci encore,


samedi 5 novembre 2005 à 00:50:51 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Juste une derniere question, je comprends pas ce pobleme j'arrive a afficher le plus petite note mais la personne n'est pas la bonne.

 int man (void)
{
    string nom[8];
    int i = 0;
    double max = 0;
    double min = 20;
    double not[8];
    double moy = 0;
   
    while (cin >> nom[i]  >> note[i] )
    {
       ++i;
    }
   
    string nommax;
    string nommin;

    for ( int i = 0 ; i < 8 ; ++i )
    {
       if ( note[i] > max )
          max = note[i];
          nommax= nom[i];
       if ( note[i] < min )
          min = note[i];
          nommin = nom[i];              // ICI !!!!???
       moy += note[i];
    }
    moy /= i;
    cout << "Best: " << nommax << " " << "(" << max << ")" << endl;
    cout << "Worst: " << nommin << " " << "(" << min << ")"  << endl;
    cout << "Average: " << moy << endl;
}

Elle m'affiche Zuzanne pour la petite note or ca devrait etre marc???!!!

Merci encore,

samedi 5 novembre 2005 à 01:00:16 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

Hylvenir

Il manque les accolades pour tes if

       if ( note[i] > max )
{
          max = note[i];
          nommax= nom[i];
}
       if ( note[i] < min )
{
          min = note[i];
          nommin = nom[i];              // ICI !!!!???
}

sinon tu n'as pas besoin de sauvegarder les valeurs mais juste l'index sur les valeurs du tableau.

       if ( note[i] > note[indexMax] )
          indexMax =  i;

       if ( note[i] < note[indexMin] )
          indexMin = i;


Ma participation à la saturation du net:
http://hylvenir.free.fr
dimanche 6 novembre 2005 à 01:59:16 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Merci j'avais pas vu :)

Une derniere question : si on auriait pas connu le nombre de lignes (nom[8]), fallait-il utiliser dans ce cas un "cin.eof"???s'il existe lol

exemple:

do { cin >> nom[i] >> note[i];
       ++i; }
while (cin.eof)


Merci encore pour tout!!!!

dimanche 6 novembre 2005 à 02:24:52 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

Hylvenir

Non pas besoin

le while( cin >>... )
    ++i; 

suffit
s'il n'y a plus de lignes, ce qu'il y a dans le while renvoit false.
Tu peux faire l'essai si tu veux.


Ma participation à la saturation du net:
http://hylvenir.free.fr
dimanche 6 novembre 2005 à 13:54:17 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

shinrei

Rebonjour,

J'ai oublié une derniere requete a faire dans mon script:
quand on tape "./basic_stats < /dev/null" , il devrait rien m'afficher. Or ca me donne des resultats (bizarre)

ex:
$ ./basic_stats < /dev/null
Best :   (4.8653e-270)
Worst:   (-1.99918)
Average: -inf


au lieu de :
$ ./basic_stats < /dev/null
$


J'ai essayer de faire un test avant mon while avec un :
if (cin = = null)  ou if (cin = = "")     pour ne rien  afficher mais en vain.

C'est avec un break ou return qu'on quitte un programme?

Merci infiniment,
   


dimanche 6 novembre 2005 à 20:04:40 | Re : Lire dans un fichier texte ligne par ligne et mot par mot

1 2

Cette discussion est classée dans : fichier, basic, error, cpp, stats


Répondre à ce message

Sujets en rapport avec ce message

Des probleme help!!!!!!!!!!!!!!!! [ par echizen69 ] BonjourJe suis nouveau dans le domaine de la programmation, et la j' ai essayer de créer un fichier .h et un fichier .cppPuis j' obtiens :LIBCD.lib(cr compilation sous g++ avec des fichier module [ par bidules ] bonjour,voila j'ai un projet a realiser.Ce projet contiendra une class dans un fichier .h et les fonctions menbres dans un fichier cpp (le truc normal Qui peut m'aider à comprendre où est l'erreur [ par Minikisscool ] Lorsque je compile j'ai ces erreurs :--------------------Configuration: test - Win32 Debug-----Compiling...test.cppC:\test\test.cpp(34) : warning C451 Pb de compilation [ par Minikisscool ] Lorsque je compile j'ai ces erreurs : --------------------Configuration: test - Win32 Debug-----Compiling... test.cpp C:\test\test.cpp(34) : warning parse error dans un fichier RC [ par darkalpha ] bonjour,en compilant un programme aujourd'hui je me suis trouvé face à cette erreur :D:\Progs\DEV-C_~1\Bin\windres: C:\\client\\rsrc.rc:4: parse error Interface graphique et fichier cpp ensemble [ par gazzall ] Bonjour, J'ai un projet a realiser pour le moment il fonctionne mais sur une console Dos. Idependament J'ai demarer mon interface graphique mais maint [HELP] Pb de compilation... [AHHHHHHH] [ par Mycado ] Slt à tous,je me suis lancé dans le C++ mais j'ai des petits (gros plutot) pb lors de la compilation d'un programme.J'ai Visual C++ 6.0 sous windows ^ ecrire dans un fichier Excel sous Dev-Cpp [ par fox88 ] je recherche un moyen afin d'ecrire des donnees dans un fichier Excel afin de mettre de la mise en forme (couleur des cellules, etc...) en c++ sous De Catastrophe ! VC++ a détruit un fichier source (panne de courant) [ par jockos ] J'étais tranquillement en train de travailler sur mon projet avec VC++ quand une vilaine panne de courant est venu arrêter mon PC sans prévenir... vio Envoi de gros fichier en CPP via TServerSocket [ par topelamonpote ] Bonjour tout le monde je suis en train de confectionner un Online videoServer ou une sorte de video à la demande. Est ce que qq un connait une bonne m


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales