Un erreur dev c++

Fermé
Utilisateur anonyme - 12 févr. 2009 à 19:28
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 févr. 2009 à 11:25
Bonjours,

J'ai un problème.

Sur mon bureau j'ai créer un dossier :
Anglais de ensuite dedans j'ai y mit les 2 .txt :
anglais.txt et francais.txt
ensuite j'ai ouvert "Dev C++" j'ai y mit ce codes :
#include <iostream>   // ça, tout le monde connaît !
#include <string>     // pour les chaînes de caractères
#include <fstream>    // pour lire dans les fichiers .txt
#include <vector>     // pour pouvoir utiliser les vecteurs
#include <ctime>      // pour les nombres aléatoires
 
using namespace std;
 
int aleatoire(const int min, const int max)
{
    return (int)(min+((float) rand()/RAND_MAX*(max - min + 1)));
}
 
void traduction(vector<string>& tabCherche, vector<string>& tabRes, int alea)
{
    string traduc;
    cout << "Traduisez le mot suivant : " << tabCherche[alea] << " : ";
    cin >> traduc;
 
    if(traduc == tabRes[alea])  //je vérifie la traduction
        cout << "Tres bien" << endl << endl;
    else if(traduc == "0000") // condition d'arrêt
    {
        cout << endl;
        cout << "Fin du test" << endl << endl;
        exit(0);
    }
    else
        cout << "Eh ben non, la bonne reponse est : " << tabRes[alea] << endl << endl;
}
 
int main()
{
    const int min = 0;
    const int max = 1;
 
    srand((unsigned) time(NULL));  // sert à initialiser le rand()
 
    vector<string> tabfr;  // les vecteurs se déclarent comme ceci !
    vector<string> taban;
    string mot;  // chaîne intermédiaire servant à stocker le mot dans le vecteur
 
    ifstream fichierAnglais("anglais.txt", ios::in); // ouverture lecture seule
    ifstream fichierFrancais("francais.txt", ios::in);
 
    if(fichierAnglais && fichierFrancais)
    {
        while(getline(fichierAnglais, mot)) // tant qu'on peut lire dans le fichier
        {
            taban.push_back(mot);  // pour rajouter dans un vecteur
            getline(fichierFrancais, mot);         
            tabfr.push_back(mot);
        }
        fichierAnglais.close();   // fermeture des fichiers
        fichierFrancais.close();
    }
    else
    {
        cerr << "Impossible d'ouvrir un des 2 fichiers !" << endl;
        exit(1);
    }
 
    for(int j = 0; j < 100; j++)
    {
        int alea2 = aleatoire(min, max);
        int alea = aleatoire(min, tabfr.size()-1);  // le -1 car dans un vecteur, on compte à partir de 0
 
        if(alea2 == 0) // si c'est 0, il demande un mot français
            traduction(taban, tabfr, alea);
        else // sinon, il demande un mot anglais
            traduction(tabfr, taban, alea);
    }
 
    return 0;
}

Je le compile sa marche mais quand je ouvre l'exécutable sa m'affiche que :
"revision anglais .exe a recontré un problème et doit ferme. Nous vous prions de nous excuser pour le désagrément encouru."

Comment faire pour que sa évite sa ?
merci d'avance.
A voir également:

4 réponses

Je l'ai compilé chez moi, sans rien linker, et ça fonctionne très bien.
Essaie d'ajouter des sorties dans ton code et de l'executer pas à pas, pour voir où ça cloche.
0
Je l'ai compilé chez moi, sans rien linker, et ça fonctionne très bien.
Essaie d'ajouter des sorties dans ton code et de l'executer pas à pas, pour voir où ça cloche.
0
Utilisateur anonyme
13 févr. 2009 à 11:10
Je vais essayer avec CodeBlock car j'ai vu que avec Dev il s'y trouve des bug
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 févr. 2009 à 11:25
Je pense que l'erreur vient du while() et de la lecture de fichier, car le reste de l'ensemble du code semble Ok du point de vue mémoire.
DevCpp n'est pour rien dans ton souci. Utilise le debuggueur pour débusquer d'où viens l'erreur.
gdb ton_prog.exe
0