• # char

    Posté par (site web personnel, Mastodon) . Évalué à 4. 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.

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

        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.

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

      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 ! 🎄

Suivre le flux des commentaires

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