Liste de combinaisons

simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006 - 8 août 2006 à 21:05
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006 - 9 août 2006 à 11:28
Salut !
Voilà, ce code compile parfaitement, je le pense correct, mais dès la première execution, il me plante méchamment dans les mains : ACCESS VIOLATION.

ça a pour but de montrer toutes les combinaisons possibles d'une chaine de caractères...

string combinaison( string chaine, string traitee )
{
    if( chaine.length() == 1 )
    {
        cout << traitee << chaine << endl;
        fputs( traitee.c_str(), f );
        fputs( chaine.c_str(), f );
        fputs( "\n", f );
    }
    else
    {
        for( int i=0; i<chaine.length(); i++ )
        {
            char ch = chaine.at( i );
            chaine.replace( i, 1, "" );
            combinaison( chaine, traitee + ch );
        }
    }

Merci pr l'aide !

1 réponse

simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
9 août 2006 à 11:28
Nouvel version, toujours la meme erreur : apparemment, ça vient après l'écriture dans le fichier (au niveau du marqueur)
=> je sais pas du tout à quoi c'est dû...

string combinaison( const string& chaine, const string& traitee )
{
    if( chaine.length() == 1 )
    {
        cout << traitee << chaine << endl;
        fout << traitee << chaine << endl;
       // l'erreur semble se produire ici (à la fin du traitement)
    }
    else
    {
        for( int i=0; i<chaine.length(); i++ )
        {
            char ch = chaine.at( i );
            string chaine2( chaine );
            chaine2.replace( i, 1, "" );
            string traitee2( traitee + ch );
           
            combinaison( chaine2, traitee2 );
        }
    }
}
0
Rejoignez-nous