Fichier en c++
Fermé
sky123
Messages postés
42
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
23 novembre 2008
-
20 sept. 2008 à 23:06
mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 - 20 sept. 2008 à 23:36
mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 - 20 sept. 2008 à 23:36
A voir également:
- Fichier en c++
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier iso - Guide
2 réponses
oldirty
Messages postés
21
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008
4
20 sept. 2008 à 23:16
20 sept. 2008 à 23:16
sl é ce tu pouré etre un peu + explicite (lecture de donnés, rangement des donnés,obtenir une formule mathématique,...)
++
++
mamiemando
Messages postés
33344
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
7 novembre 2024
7 803
20 sept. 2008 à 23:36
20 sept. 2008 à 23:36
Ben il faut commencer par lire le fichier ligne par ligne (par exemple avec getline) et scanner chaque ligne lue (par exemple avec sscanf). Ensuite tu calcules ce que tu veux...
ce qui donne :
#include <iostream> #include <ostream> #include <fstream> #include <string> #include <map> struct notes_t{ double note1,note2,note3,moyenne,coeff,coeff_moy; notes_t(){} notes_t( const double & note1_, const double & note2_, const double & note3_, const double & moyenne_, const double & coeff_, const double & coeff_moy_ ): note1(note1_),note2(note2_), note3(note3_),moyenne(moyenne_), coeff(coeff_),coeff_moy(coeff_moy_) {} }; inline std::ostream & operator << (std::ostream & out,const notes_t & notes){ out << "[note1 = " << notes.note1 << " note2 = " << notes.note2 << " note2 = " << notes.note2 << " moyenne = " << notes.moyenne << " coeff = " << notes.coeff << " coeff_moy = " << notes.coeff_moy << ']'; return out; } typedef unsigned code_t; typedef std::map<code_t,notes_t> datas_t; int main(){ // Ouverture du fichier const char *filename = "pouet.txt"; std::ifstream f(filename); if(!f){ std::cerr << "can't open [" << filename << ']' << std::endl; return 1; } // Lecture du fichier datas_t datas; { std::string line; for(unsigned no_line=0;std::getline(f,line);++no_line){ notes_t notes; code_t code; if (line.empty() || line[0] == '#') continue; if(sscanf(line.c_str()," %i %lf %lf %lf %lf %lf %lf", &code,¬es.note1,¬es.note2,¬es.note3, ¬es.moyenne,¬es.coeff,¬es.coeff_moy) == 7 ){ std::cout << notes << std::endl; datas[code] = notes; }else{ std::cerr << "Ligne " << no_line << " invalide [" << line << ']' << std::endl; } } } // Parcours de la structure data; { double moy1 = 0, moy2 = 0, moy3 = 0; std::size_t nb_notes = datas.size(); datas_t::const_iterator datas_it (datas.begin()), datas_end(datas.end()); for(;datas_it!=datas_end;++datas_it){ const code_t & code = datas_it->first; const notes_t & notes = datas_it->second; std::cout << "code = " << code << '\t' << notes << std::endl; moy1 += notes.note1; moy2 += notes.note2; moy3 += notes.note3; } moy1 /= nb_notes; moy2 /= nb_notes; moy3 /= nb_notes; std::cout << "moy1 = " << moy1 << " moy2 = " << moy2 << " moy3 = " << moy3 << std::endl; } // Fermeture du fichier f.close(); return 0; }
ce qui donne :
[note1 = 11 note2 = 12 note2 = 12 moyenne = 12.8333 coeff = 2 coeff_moy = 25.6667] [note1 = 11 note2 = 10 note2 = 10 moyenne = 9.66667 coeff = 1 coeff_moy = 9.66667] [note1 = 14 note2 = 17 note2 = 17 moyenne = 14.1667 coeff = 1 coeff_moy = 14.1667] [note1 = 10 note2 = 14 note2 = 14 moyenne = 12.1667 coeff = 3 coeff_moy = 36.5] [note1 = 14 note2 = 17 note2 = 17 moyenne = 16.6667 coeff = 3 coeff_moy = 50] [note1 = 0 note2 = 15 note2 = 15 moyenne = 7.66667 coeff = 2 coeff_moy = 15.3333] [note1 = 14 note2 = 15 note2 = 15 moyenne = 15 coeff = 1 coeff_moy = 15] [note1 = 10 note2 = 10 note2 = 10 moyenne = 10.5 coeff = 1 coeff_moy = 10.5] [note1 = 11 note2 = 15.5 note2 = 15.5 moyenne = 12.8333 coeff = 1 coeff_moy = 12.8333] [note1 = 11 note2 = 12 note2 = 12 moyenne = 11.8333 coeff = 1 coeff_moy = 11.8333] [note1 = 14 note2 = 15 note2 = 15 moyenne = 15.6667 coeff = 1 coeff_moy = 15.6667] [note1 = 10 note2 = 11 note2 = 11 moyenne = 10.8333 coeff = 1 coeff_moy = 10.8333] ... moy1 = 10.8333 moy2 = 13.625 moy3 = 13Bonne chance