|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 5 ![]() |
Bonjour à tous !
Dans le cadre de mes études il m'est demandé de créer un projet en C++, celui-ci doit permettre a un utilisateur lambda de pouvoir creer, repondre et consulter les résultats d'un sondage. Cependant j ai un petit soucis lorsque mon utilisateur doit répondre au sondage. En effet j ai crée un fichier avec toutes les réponses de l'utilisateur et ce pour chaque sondage. Cependant ce fichier doit pouvoir être modifié et ce a chaque fois qu'un nouvel utilisateur y répond mais je ne vois pas qu'elle pourrait être la démarche. Pour vous expliquer un peu plus en detail j utilise ce fichier au sein d'une fonction , j'ouvre le fichier des données en lecture Code :
Code :
ex ; Code :
Ensuite le fichier et réouvert afin de modifier les données en les incrémentant Code :
Je peux vous envoyer le programme si vous souhaitez plus de détails mais j’espère avoir été suffisamment claire Merci pour idées si vous en avez ! |
||||||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() ![]() Guillaume GomezÉtudiant Inscription : mai 2010 Messages : 176 ![]() |
Tu devrais lire plus en détail le man de fopen. Le flag w ouvre le fichier en mode écriture et efface son contenu. Pour écrire à la fin sans tout effacer, je te laisse chercher dans le man quel est le bon flag.
PS: tu pourrais laisser ton fichier ouvert quand t'as fini de lire les infos, le curseur sera déjà à la fin. Mais pour ça il faudra qu'il soit déjà ouvert en mode lecture / écriture. |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Julien Chef de projet R&D Inscription : mars 2007 Messages : 183 ![]() |
Salut,
A mon avis, le plus simple est de ne pas garder les résultats compilé dans ton fichier. Enregistre simplement les réponses sur une nouvelle ligne. Ainsi, pour consulter les résultats, il suffit de parcourir le fichier et de compter le nombre d'hommes est de femmes. La somme des 2 te donnant le nombre de répondants. Pour ajouter un résultat, il suffit d'ouvrir le fichier en append (flag a ou a+), et d'ajouter la réponse de l'utilisateur. Si ton sondage à plusieurs questions, tu peux mettre toute les réponses d'un utilisateur sur une même ligne en les séparant par des ";". C'est bien sur plus propre que de les mettre séquentiellement et de devoir compter les lignes pour savoir à quelle question une réponse appartient. Enfin, n'écris les résultats dans le fichier que lorsque l'utilisateur à répondu à toutes les questions. Ca t'assurera que tu ne tiens compte que des utilisateurs ayant répondu à l’assemble du questionnaire (si c'est bien le comportement que tu veux). |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 5 ![]() |
Bonjour
Pour répondre à imperio j ai choisi d ouvrir mon fichier en W justement afin que mes incrémentations puissent se faire sur mes variables de mon fichier et donc ne pas m afficher les résultats de chaque sondage à la suite et justement je n arrive pas à les incrémenter à chaque fois que j ouvre mon fichier de données il ne me prend en compte que les résultats de la dernière personne sondée voilà mon problème Pour répondre à djuju merci de m avoir fait pensé au fait de ne prendre en compte les résultats du sondage que lorsque la personne a fini le sondage |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() ![]() Guillaume GomezÉtudiant Inscription : mai 2010 Messages : 176 ![]() |
Hum... Fort étrange... En gros si un homme puis une femme font se sondage, au final il n'y aura qu'une femme de compter et l'homme sera passé à la trappe. T'as déjà regardé si les valeurs que tu récupérais de ton fichier était les bonnes ? Le problème pourrait venir de là.
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 5 ![]() |
Bonjour,
Mon fichier de données me reprend bien les bons resultats mais seulement de la dernière personne qui y a répondu comme tu l as noté auparavant ! |
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() ![]() Guillaume GomezÉtudiant Inscription : mai 2010 Messages : 176 ![]() |
Dans ce cas il doit manquer quelque chose parce que ça ne me paraît pas logique. Le raisonnement est bon, d'après ce que tu me dis les valeurs sont bien récupérées. Dans ce cas d'où pourrait provenir le problème ? Tu as affiché toutes les valeurs à chaque modification pour voir si tout se passait correctement ?
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 5 ![]() |
Oui à chaque fois que je reponds au sondage les données sont bien modifées mais il ne me prend pas en compte les resultats précédents !
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Jean-Bernard Inscription : mars 2007 Messages : 1 001 ![]() |
Salut lulOux
Tu ne fais pas du C++ ici, tu manipules tes fichiers avec l'API C. Tu devrais jeter un oeil sur la FAQ et refaire ton programme à la sauce C++. L'API C est-elle imposée par ton professeur ? |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Étudiant Inscription : janvier 2013 Messages : 5 ![]() |
Bonjour,
Non l'API C n'est pas imposé je t'avouerai même que je ne connais pas du tout ce terme ! Je vais demander à mon professeur tout à l'heure pourquoi ca ne marche pas car je pense que le problème vient au niveau de l'ouverture du fichier et de la lecture des données car finalement en transformant un peu le programme j'ai bien vu qu il me faisait bien l’incrémentation mais le problème c'est qu'il me prend toutes mes données du fichier comme étant égales à 0 |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : août 2004 Messages : 3 672 ![]() |
Ce que dit jblecanard, c'est que les structures et les fonctions que tu utilises pour manipuler tes fichiers (FILE*, fopen, etc.) c'est du C, et non pas du C++. Tout ceci est encore présent dans c++ pour des raisons de compatibilités. Quitte à apprendre le c++, autant apprendre le c++, et non le c.
Pratiquement, au lieu de FILE* on utilisera la classe fstream et ses dérivés. Et au lieu de fscanf et fprintf, on utilisera les opérateurs de flux (<< et >>), comme avec cin et cout. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com