Mettre chiffres en mois

Fermé
supertomtom Messages postés 316 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 28 novembre 2010 - 14 mars 2010 à 18:32
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 mars 2010 à 20:24
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.

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mars 2010 à 18:39
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
supertomtom Messages postés 316 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 28 novembre 2010 83
14 mars 2010 à 19:16
:-) 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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mars 2010 à 19:23
T'encapsules le scanf dans une boucle while jusqu'à ce que le nombre soit entre 1 et 12.
0
supertomtom Messages postés 316 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 28 novembre 2010 83
14 mars 2010 à 19:54
Désolé mais je commence juste en programation et je ne sais pas ce que c'est encapsuler...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mars 2010 à 20:24
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