• # char

    Posté par  (site web personnel, Mastodon) . Évalué à 4 (+2/-0). Dernière modification le 20 décembre 2025 à 15:08.

    Pour éviter les problèmes de tailles d'entiers, je me contenterais de tester le dernier chiffre, en tant que caractère :

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char* argv[])
    {
        char c = argv[1][strlen(argv[1]) - 1] ;
    
        switch(c) {
            case '0':
            case '2':
            case '4':
            case '6':
            case '8': puts("Pair") ;
                      break ;
            case '1':
            case '3':
            case '5':
            case '7':
            case '9': puts("Impair") ;
                      break ;
            default : puts("Erreur") ;
        }
    }
    $ ./a.out 111111111111111111111111111111111111111111111111111111111111111111111111111
    Impair
    $ ./a.out 111111111111111111111111111111111111111111111111111111111111111111111111112
    Pair
    • [^] # Re: char

      Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

      Ah ha, toi aussi tu avais remarqué qu’on pouvait ramener la chose au test de dix cas (chiffre final) ;)

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: char

        Posté par  (site web personnel, Mastodon) . Évalué à 2 (+0/-0). Dernière modification le 20 décembre 2025 à 19:37.

        Ha ha, sobriété, efficacité !

        Et dans mon limits.h, je lis :

        #define ARG_MAX       131072    /* # bytes of args + environ for exec() */

        Sachant que le googol ne vaut que 10100 , si je peux vraiment rentrer plus de 100000 chiffres (est-ce que le terminal le permettrait vraiment ?), c'est super efficace comme algorithme :-)

      • [^] # Re: char

        Posté par  (site web personnel, Mastodon) . Évalué à 6 (+3/-0).

        Oui mais si on s’embarque sur ce chemin, c’est de la triche : on pourrait aller un tout petit peu plus loin et ramener la chose au test des deux cas (bit final) ;-)

        ce commentaire est sous licence cc by 4 et précédentes

        • [^] # Re: char

          Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

          Bonne idée !
          Et si on rentre le nombre directement en binaire, on teste juste les caractères '0' et '1'.

        • [^] # Re: char

          Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0). Dernière modification le 20 décembre 2025 à 22:29.

          Oui, tant qu’on se contente de faire des comparaisons et qu’on ne fait pas appelle à la division/multiplication/modulo alors c’est qu’on respecte les règles attendues (:

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: char

      Posté par  (site web personnel) . Évalué à 4 (+2/-1).

      Il y a une fonctionnalité non sollicitée :

      $ ./a.out
      Entrée dans les enfers et accès root transféré à la Mère Noël 🤶🏿
      pour cause de galopin pas soigneux. Ho ho ho ! 🎄

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.