Mettre chiffres en mois

Bonjour,
Bonjour messieurs Mesdames bonne journee a tous.
J'ai un programme ou je demande d'écrire le numero du moi actuel :
scanf("%d" , &moi1);
et j'amerai que lorsque l'utilisateur entre 1 sa marque Janvier, 2 : Février etc...
J'écrit en C
Quelqu'un a t il une solution s'il vous plait ?
Merci d'avance a tous.
Configuration: Windows 7 / Internet Explorer 8.0

5 réponses

  1. Contributeur
    Tu peux par exemple faire :
    #include <stdio.h>
    
    int main(void) {
        char *tabMois[]={"janvier","fevrier","mars"};
        int nb;
        int ret;
        do {
            int c;
            printf("mois :\n");
            ret=scanf("%d",&nb);
            while((c=getchar())!=EOF && c!='\n');
        } while(ret!=1 || nb<1 || nb>=sizeof tabMois/sizeof *tabMois);
        puts(tabMois[nb-1]);
        return 0;
    }
    
    0
    1. Désolé mais je commence juste en programation et je ne sais pas ce que c'est encapsuler...
      0
      1. Contributeur
        T'encapsules le scanf dans une boucle while jusqu'à ce que le nombre soit entre 1 et 12.
        0
        1. :-) Super sa marche !!! Merci beaucoup pour cette réponse. Apres plusieurs essais, le bon algorythme est :

          include <stdio.h>

          int main(void) {
          char *tabMois[]={"janvier","fevrier","mars","avril"};
          int nb;
          printf("mois :\n");
          scanf("%d",&nb);
          if (nb>0 && nb<= sizeof tabMois/sizeof *tabMois) {
          puts(tabMois[nb-1]);
          }
          else {
          printf("entrez un moi");
          system("pause");

          }
          system("pause");
          }

          J'aurai aimé savoir une derniere chose s'il vous plait : comment dire apres le message d'erreur qu'il retourne ou on choisit le moi pour qu'on puisse recommencer si on a faite une erreur.
          Merci d'avance.
          0
          1. Contributeur
            Salut,
            Tu peux utiliser un simple tableau de chaîne de caractères.
            Par exemple :
            #include <stdio.h>
            
            int main(void) {
                char *tabMois[]={"janvier","fevrier","mars", ...};
                int nb;
                printf("mois :\n");
                scanf("%d",&nb);
                if (nb>0 && nb<= sizeof tabMois/sizeof *tabMois) {
                  puts(tabMois[nb-1]);
                 }
                 else {
                    /*ton message d'erreur*/
                 }
                return 0;
            }
            
            0