main.c
// Retourne vrai si toute les lettres de gauche se retrouvent dans droite et vice versa.
Retourne vrai si toute les lettres de gauche se retrouvent dans droite et vice versa.
Retourne vrai si toute les lettres de gauche se retrouvent dans droite et vice versa .
bool anagramme(char const* const gauche, char const* const droite)
{
#define L_ALPHABET ('z' - 'a')
    int lettres[L_ALPHABET + 1] = {0};
    for(char const* g = gauche; *g != '\0'; ++g)
    {
        lettres[(*g) - 'a'] += 1;
    }
    for(char const* d = droite; *d != '\0'; ++d)
    {
        lettres[(*d) - 'a'] -= 1;
    }
    for(size_t i = 0; i != L_ALPHABET + 1; ++i)
    {
        if(lettres[i] != 0)
        {
            return false;
        }
    }
    return true;
}
bool anagramme ( char const * const gauche , char const * const droite ) { #define L_ALPHABET  ('z' - 'a') int lettres [ L_ALPHABET + 1 ] = { 0 } ; for ( char const * g = gauche ; * g != ' \0 ' ; ++ g ) { lettres [ ( * g ) - ' ' ] += 1 ; } for ( char const * d = droite ; * d != ' \0 ' ; ++ d ) { lettres [ ( * d ) - ' ' ] -= 1 ; } for ( size_t i = 0 ; i != L_ALPHABET + 1 ; ++ i ) { if ( lettres [ i ] != 0 ) { return false ; } } return true ; }
Retourne vrai si toute les lettres de gauche se retrouvent dans droite et vice versa.
Retourne vrai si toute les lettres de gauche se retrouvent dans droite et vice versa .
// On compte la fréquence de toutes les lettres dans la chaîne gauche. // On décompte la fréquence de toutes les lettres dans la chaîne droite. // Si les comptes n'arrivent pas à zéro, ce n'est pas un anagramme.