problème en C++

Bonjour à tous,

Voilà ,j’ai un petit problème en programmation c++. Je cherche à lire un fichier .txt qui contient pour chaque ligne, un nom de livre ainsi que le nom de l’auteur, les deux éléments étant séparés par un “$”. Je cherche pour le moment simplement à lire le nom du livre de la première ligne.
Voici ce que j’ai trouve jusqu’à présent:

#include
#include
#include
#include
using namespace std;

int main (int argc, char*const argv[]){

string a;
int b;
string titre;
int nb_livres;
ifstream fin (“livres.txt”);
fin>>nb_livres;
for (b=0;b<nb_livres; b++){
string titre="";
while(a!="$"){
fin>>a;
titre=titre+a+" ";
}
cout<<titre<<endl;
}
cout<<endl;
system(“pause”);
return 0;
}

Seulement, cela ne fonctionne pas, j’aimerais donc savoir pourquoi et avoir vos conseils pour continuer à lire la suite du fichier.
Merci d’avance et à bientôt,
Michael

[code]#include
#include
#include
#include
using namespace std;

int main (int argc, char*const argv[]){

string a;
int b;
string titre;
int nb_livres;
ifstream fin (“livres.txt”);
fin>>nb_livres;
for (b=0;b<nb_livres; b++){
string titre="";
fin>>a;
while(a!="$"){
titre=titre+a+" ";
fin>>a;
}

cout<<titre<<endl;
}
cout<<endl;
system(“pause”);
return 0;
}[/code]
pour commencer. (pas bcp de temps libre)

Déjà j’ai l’impression que tu vas boucler x foix, x étant le numéro du premier livre. On peut raisonnablement penser que ce nombre sera 1, mais ce serait plus propre de mettre ton for en commentaire pour le moment.

Secundo, au lieu d’utiliser l’opérateur >> caractère par caractère moi j’essayerais ça:
fin.getline(titre.c_str(), 256, ‘$’)

ou ça:
char buffer[256];
fin.getline(buffer, 255, ‘$’);

Regex pawa! ([^$]+)$(.*)
avec $1 pour le livre et $2 pour l’auteur

:smiley:

Une aide indirecte mais précieuse :
http://www.cplusplus.com/

Oui, fin la c’est pas un probleme de langage, mais d’algorithme …

Faut commencer par la base, et comprendre comment fonctionne un algorithme. Parce qu’il y a quand meme des boucles qui servent pas a grand chose dans ce code …
Commence par ecrire ton algo en pseudo-code, puis transcrit le en C++.

La j’ai l’impression que tu ne maitrises ni l’un ni l’autre. Quand on debut, ca aide de commencer comme ca.

Fait un truc comme ca :

[code]Procedure ParseLivre
Debut

fichier = ouvrir(fichier tutu)
ligne = fichier.premiere_ligne
Tant que ligne != fin du fichier
Ligne = fichier.ligne_en_cours
Nom_livre = ligne.partie_avant_$
Nom_auteur = ligne.partie_apres_$
affichier nom_livre, nom_auteur
ligne = fichier.ligne_suivante
fin tant que

Fin[/code]

voila, et ensuite tu pourras reflechir a comment le faire dans un langage. Mais franchement, l’algorithmie, ca me semble vraiment plus important pour commencer.

Je suis entièrement d’accord avec Cben. Visiblement tu ne maîtrises pas correctement l’algorithme que tu veux transcrire. Avant de “faire du code”, il faut savoir ce que tu veux qu’il fasse et comment. Un bon programme ça commence papier crayon!

Hum, perso je trouve cette question plus que louche, ça sent vraiment le genre d’exercice débile que l’on demande à des étudiants ça…

+1

// Oui je sais que ca risque de planter suivant les langages :smiley:
while( true ) { i++; }

[quote=« PERECil, post:10, topic: 50399 »]// Oui je sais que ca risque de planter suivant les langages :smiley:
while( true ) { i++; }[/quote]

pourquoi t’emmerder a compter ^^ : while(1);
:smiley:

moi je préfère
while(1){new int;}

c’est plus destructeur :smiley:

[quote=“Ivru, post:4, topic: 50399”]Regex pawa! ([^$]+)$(.*)
avec $1 pour le livre et $2 pour l’auteur

:D[/quote]

Arrête d’être malpoli avec le monsieur !

C’est forcement un exo d’etudiant… vous imaginez votre boss qui vous demande ca ? :smiley:

Je confirme, exo d’étudiant, j’en ai eu un dans le même style l’année dernière :smiley:

Donc ? un unique message pour une demande d’aide, sans un bonjours, pas une reponse de ca part depuis hier, si ca devient pas tres tres vite constructif d’ici demain, je fermes!

Sinon, pour la question: c’est pas pour resoudre ce genre de problemes qu’on prends des stagiaires?

5ug4r 3d1t:
Et puis en plus y a pas les tabs bien propres dans son code, et ca, c’est un coup a devenir responsable cafe et photocopies en 2 coups de cuillere a pot… :smiley: