En langage C : if; while..do; while.. autre
Résolu
Acid_Burn77
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Acid_Burn77 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Acid_Burn77 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- En langage C : if; while..do; while.. autre
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
3 réponses
Ne t'occupes pas de l'interface en premier lieu. Concentre-toi sur le côté fonctionnel de ton programme. Pour l'interface, utilise scanf() pour demander un nombre et non une chaine de caractères.
j'utilise un int dans le scanf ("%d",&v_entree)ben mon code c'est ça:
tant que je rentre des chiffres ça joue. mais si par inattention je rentre une lettre ça me modifie mon année.. et j'aimerai éviter ça..
#include <stdio.h> #include <stdlib.h> int main (void) /*-------*/ { int v_entree,v_calcule,v_resultat,v_a,v_b,v_c,v_d,v_e; printf ("****************************************************\n"); printf("Entrez une annee dont vous voulez connaitre le jour de paques:\n"); printf ("***************************************************\n\n"); scanf("%d",&v_entree); // Calcule pour déterminer le mois v_calcule=v_entree-1900; v_a=v_calcule%19; v_b=(7*v_a+1)/19; v_c=(11*v_a-v_b+3)%29; v_d=v_calcule/4; v_e=(v_calcule-v_c+v_d+31)%7; v_resultat=(25-v_c-v_e); // Afficher le mois if (v_resultat >0) { printf("\nLa date de paques sera(est)le %d Avril %d\n",v_resultat,v_entree); } else { printf("\nLa date de paques sera(est)le %d Mars %d\n",31+v_resultat,v_entree); } system ("PAUSE>nul"); return 0; }
tant que je rentre des chiffres ça joue. mais si par inattention je rentre une lettre ça me modifie mon année.. et j'aimerai éviter ça..
Voila la correction :
#include <stdio.h> #include <stdlib.h> int main (int argc, char* argv[]) { int v_entree,v_calcule,v_resultat,v_a,v_b,v_c,v_d,v_e; int exitwhile; char buffer[5]; //Demande de l'année à l'utilisateur do { printf("Annee: "); fgets(buffer,5,stdin); exitwhile = sscanf(buffer,"%d",&v_entree); } while (exitwhile == 0); //Calcul pour trouver la date v_calcule=v_entree-1900; v_a=v_calcule%19; v_b=(7*v_a+1)/19; v_c=(11*v_a-v_b+3)%29; v_d=v_calcule/4; v_e=(v_calcule-v_c+v_d+31)%7; v_resultat=(25-v_c-v_e); //Affichage du résultat if (v_resultat>0) v_a = v_resultat; else v_a = 31+v_resultat; printf("La date de Paques sera le %d %s %d\n\n",v_a,(v_resultat>0?"avril":"mars"),v_entree); //Fin du programme system ("pause>nul"); return 0; }