Aide en c++

bifaka Messages postés 3 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 12 mai 2004 - 11 mai 2004 à 22:32
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 12 mai 2004 à 19:47
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;

FLecture.open("LIVRES.txt");

if(FLecture.fail())

{
cout<<"Probleme d'ouverture"<<endl;
}
else
{
getline(FLecture,titre);


while(!FLecture.eof())

{

FLecture>>Annee;
FLecture>>Nombre_page>>Prix_achat>>Prix_vente>>Nombre_copie_achete>>Nombre_copie_vendu;
if((Annee==1971) && ((Prix_vente*Nombre_copie_vendu) - (Prix_achat*Nombre_copie_achete))>=10000)

cout<<titre<<endl;
getline(FLecture,titre);
//FLecture>>Annee;
//FLecture>>Nombre_page>>Prix_achat>>Prix_vente>>Nombre_copie_achete>>Nombre_copie_vendu;

}

FLecture.close();

}

}

5 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
11 mai 2004 à 23:06
c koi le probleme à l'execution?

int main() en c++ et ifstream FLecture("LIVRE.txt"); c'est mieux, FLecture.close(); n'est pas necessaire
0
ensiame Messages postés 15 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 15 décembre 2005
12 mai 2004 à 11:18
Le critère Annee == 1971 est il nécessaire à la sélection?
Car tu ne l'as pas mentionné dans ton énoncé.

et effectivement, c'est int main() qui te fait un return 0 en cas de succès.
0
bifaka Messages postés 3 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 12 mai 2004
12 mai 2004 à 15:10
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
0
ensiame Messages postés 15 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 15 décembre 2005
12 mai 2004 à 16:26
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 mai 2004 à 19:47
mais vous avez pas compris que eof ca indique pas si la lecture a ete faite

while( getline(FLecture,titre) )
{
...
}

ou test FLecture mais tient compte tu test eof seulement si ca a foiré
0
Rejoignez-nous