Floating Point Exception

Utilisateur anonyme -  
VanDog Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis en train de faire un mini-jeu et j'ai besoin de mélanger des lettres.
Malheuresement la fonction qui les mélange fait à chaque fois planter mon programme à coups de floating point exception. Voici le code de ma fonction :
#include <iostream>
#include <string>
#include "melange.h"
#include <ctime>
#include <cstdlib>


using namespace std;

string melange(string motDepart)
{

    int nbAleatoire1(2);
    int nbAleatoire2;
    char lettreCopie;
    string motMelange;
    do
    {
    motDepart = motMelange;
    nbAleatoire1 = rand() % motDepart.size();
    lettreCopie = motDepart[nbAleatoire1]; //On prend une lettre au hasard ds lettreCopie
    nbAleatoire2 = rand() % motMelange.size();    //On prend un chiffre au hasard
    motMelange[nbAleatoire2] = lettreCopie;      //On y met la lettre ds le mot
    motDepart.erase(nbAleatoire1, 1);
    }while(motDepart.size() > 0);
    return motMelange;
}


Merci à ceux qui m'aideront !

1 réponse

VanDog Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   13
 
Bien le bonjour,

Ta fonction melange est supposée prendre un string motDepart en argument et renvoyer une copie de celle-ci mélangée.

Tu initialises motMelange tel que:
 string motMelange;
qui est alors un string vide.

Le soucis arrive à l'entrée de ton do / while avec :
    do
{
motDepart = motMelange;


A ce moment tu détruis ton motDepart en remplaçant sa valeur par un string vide.
La FPE arrive alors au moment du
nbAleatoire1 = rand() % motDepart.size();
où tu fais un
modulo 0
.

La FPE arrive souvent avec les opérations impossibles (division par 0 étant la grande faucheuse).
Tu as frolé la Seg'Fault ^^


Edit suppression de la signature contraire à la charte
0