Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2822 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problèmes - Logiciel d'acquisition de temps

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problèmes - Logiciel d'acquisition de temps

n°2123826
Zqq
Posté le 29-01-2012 à 14:49:29  profilanswer
 

.

Message cité 1 fois
Message édité par Zqq le 08-02-2012 à 20:20:18
mood
Publicité
Posté le 29-01-2012 à 14:49:29  profilanswer
 

n°2123847
billgatesa​nonym
Posté le 29-01-2012 à 17:49:16  profilanswer
 

Il faut faire attention à ouvrir le fichier en mode binaire (en écriture, et en lecture), au lieu du mode texte par défaut.
C'est nécessaire car il y a un zéro binaire à la fin du nom du pilote, et car le float est du binaire.

n°2123854
Zqq
Posté le 29-01-2012 à 18:40:00  profilanswer
 

Et je fais comment pour qu'il lise et écrit le fichier en mode binaire ? Et qu'il lise tout les enregistrements au lieu de bloquer sur le premier ... :s

n°2123855
Shemr
Posté le 29-01-2012 à 18:42:42  profilanswer
 

Tu codes en C++ ?
Pourquoi ne pas utiliser les strings pour les noms des pilotes, des fstream pour les lectures/écritures dans les fichiers ?
 
Stocker les scores dans un vecteur permettrait de les trier facilement avec un std::sort plus la fonction de comparaison qui va bien.

n°2123859
Zqq
Posté le 29-01-2012 à 19:10:22  profilanswer
 

Après un tour sur internet, je vais galérer. Les fstream j'ai rien compris, et les strings, vector, lier les deux pour les classer (sort) je vois pas comment faire :O
 
Si sur mon code c'est très long tu pourrais me montrer un exemple concret que je comprenne la méthode ?

n°2123862
Shemr
Posté le 29-01-2012 à 19:23:32  profilanswer
 

Code qui crée 2-3 scores, les écrit dans un fichier, les relis et enfin les trie par ordre croissant de temps :
 

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6. #include <algorithm>
  7. struct Score
  8. {
  9. std::string nomPilote;
  10. float secPilote;
  11. Score() {}
  12. Score(const std::string &nom, float temps) : nomPilote(nom), secPilote(temps) {}
  13. };
  14. void EnregistreScore(const std::string &nomFichier, const std::vector<Score>& resultats)
  15. {
  16. std::ofstream fileStream (nomFichier.c_str() );
  17. for(unsigned int i = 0; i < resultats.size(); ++i)
  18. {
  19.  fileStream << resultats[i].nomPilote << "\t" << resultats[i].secPilote << "\n";
  20. }
  21. fileStream.close();
  22. }
  23. void ChargeScore(const std::string &nomFichier, std::vector<Score>* resultats)
  24. {
  25. std::ifstream fileStream( nomFichier.c_str() );
  26. while( fileStream.good() )
  27. {
  28.  Score score;
  29.  fileStream >> score.nomPilote >> score.secPilote;
  30.  if(fileStream.good())
  31.   resultats->push_back(score);
  32. }
  33. fileStream.close();
  34. }
  35. void AfficheScore(const std::vector<Score>& resultats)
  36. {
  37. std::cout << "Resultats de la course : \n";
  38. for(unsigned int i = 0; i < resultats.size(); ++i)
  39. {
  40.  std::cout << resultats[i].nomPilote << " : " << resultats[i].secPilote << std::endl;
  41. }
  42. std::cout << "\n";
  43. }
  44. bool trieScore(Score& a, Score& b)
  45. {
  46. return ( a.secPilote < b.secPilote );
  47. }
  48. int main(int argc, char **argv)
  49. {
  50. std::vector<Score> raceResults;
  51. raceResults.push_back( Score("Pierre", 34.5f) );
  52. raceResults.push_back( Score("Jean", 24.8f) );
  53. raceResults.push_back( Score("Luc", 13.2f) );
  54. raceResults.push_back( Score("Arnaud", 68.7f) );
  55. raceResults.push_back( Score("JB", 43.6f) );
  56. // Enregistre les scores dans le fichier
  57. std::cout << "Score a enregistrer : " << std::endl;
  58. AfficheScore(raceResults);
  59. EnregistreScore("Scores.txt", raceResults);
  60. // Relis les scores à partir du fichier
  61. std::cout << "Score lus depuis le fichier : " << std::endl;
  62. std::vector<Score> raceResultsFile;
  63. ChargeScore("Scores.txt", &raceResultsFile);
  64. AfficheScore(raceResultsFile);
  65. // Trie les scores par temps
  66. std::cout << "Score tries : " << std::endl;
  67. std::sort(raceResultsFile.begin(), raceResultsFile.end(), trieScore);
  68. AfficheScore(raceResultsFile);
  69. int dummy;
  70. std::cin >> dummy;
  71. return 0;
  72. }

n°2123874
Zqq
Posté le 29-01-2012 à 20:48:21  profilanswer
 

;


Message édité par Zqq le 08-02-2012 à 20:20:46
n°2123890
breizhbugs
Posté le 29-01-2012 à 22:41:46  profilanswer
 

Zqq a écrit :


 
Et le code qui pose problème, je pense, celui qui est censé récupérer les données sur un fichier pour les mettre dans le tableau :

Code :
  1. unsigned long tailleFichier=SetFilePointer(hFichierClassement,0,0,FILE_END);
  2. unsigned long nbreEnregistrements=tailleFichier/sizeof(TEMPS);
  3. unsigned long nbreOctetsLu;
  4. char nom[80] = "";
  5. char temps[80]="";
  6. unsigned int j=0;
  7. SetFilePointer(hFichierClassement,0,0,FILE_BEGIN);
  8. for (j=0;j< nbreEnregistrements;j++);
  9. {
  10.  ReadFile(hFichierClassement,&classementPilote,sizeof(TEMPS),&nbreOctetsLu,0); // tout lis une structure entière (nom + temps)
  11.  sprintf(nom,"%s",classementPilote.nomPilote); //tu affiches le nom du pilotes
  12.  Mnom->Lines->Add(nom);
  13.  ReadFile(hFichierClassement,&classementPilote,sizeof(TEMPS),&nbreOctetsLu,0); // tu lis la structure suivante! <- supprime cette ligne
  14.  sprintf(temps,"%.2f",classementPilote.secPilote); //  
  15.  Mtemps->Lines->Add(temps);
  16. }


 
Zqq



---------------
Seul Google le sait...
n°2124003
Zqq
Posté le 30-01-2012 à 20:56:06  profilanswer
 

Le flottant retourner est plus court que pour les autres fois, mais toujours trop grand et incohérent :s Genre 848008.50 au lieu d'un exemple : 27,54
 
J'ai supprimé la ligne que tu as dit.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problèmes - Logiciel d'acquisition de temps

 

Sujets relatifs
Modifier partage groupe résidentiel d'un fichierImport de données sous MySQL
Windows Search et Metadonnée d'un fichier : figé ou pas ?Transferer données précises vers une autre table en fonction d'un ID
Recherche base de données composant PC[phpexcel] le fichier généré ne s'ouvre plus
Séparer données cellule Excelaide lire fichier texte
[C]Ne trouve pas le fichier Delays.hAccess 2010 : générer un fichier xml
Plus de sujets relatifs à : Problèmes - Logiciel d'acquisition de temps


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR