Floating Point Exception

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

  1. 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