j'ai besoin d'aide en c++. je dois écrire un programme qui puisse lire dans un fichier texte du type
titre
annee,edition,Nbrepage,Pachat,pvente,copieachete,cpievendu.
la premiere ligne du fichier contient le titre et la deuxièeme contient les elements tels que mentionné avec des espaces.
pour pouvoir afficher un titre à l'écran il faut que (pvente*cpievendu)-(pachat*cpieachete)>=10000.
j
#include<fstream>
#include<string>
using namespace std;
void main (void)
{
ifstream FLecture;
string titre;
int Annee,Nombre_page,Nombre_copie_achete,Nombre_copie_vendu;
float Prix_achat,Prix_vente;
cout<<"Entrez une annee au clavier"<<endl;
cin>>Annee;
le problème à l'exécution c'est que j'obtiens une boucle sans fin.Je ne comprends pas pour quoi.
Le critère Annee==1971 est nécessaire j'ai oublié de le mentionner dans mon énoncé.
En fait les condition qui doivent être respectées sont l'année doit être 1971 et la formule que j'ai donné précédemment doit être respectée (car le livre sera considéré comme rentable pour le libraire).En fait on est dans le répertoire d'un vendeur de livre on cherche ceux qui ont été édités en 1971 et qui ont la particularité de vérifier la formule de rentabilité que je vous ai donné.
Voilà tout mon problème
Il semblerait que ta fin de fichier ne soit pas détectée par ton FLecture.eof()
Une alternative simple, c'est de mettre un marqueur particulier en fin de fichier , du genre [FIN] sur la dernière ligne.
Ainsi, au lieu de tester la fin de fichier, il te suffit de comparer la chaîne lue avec la chaîne "[FIN]".
Ceci te permet de contourner le test qui semble poser des problèmes, tout en te permettant si besoin est de réduire la quantité d'oeuvres testées en mettant un [FIN] en milieu de fichier. (si tu veux par exemple étendre le traitement sur plusieurs jours, tu peux même t'offrir le luxe de rajouter un marqueur [DEBUT] ).
En espérant que ceci pourra t'aider.
Si tu comptes vraiment utiliser eof() , essaie d'afficher la ligne lue à chaque passage dans la boucle, pour voir si elle devient stationnaire à un moment.