En langage C : if; while..do; while.. autre
Résolu
Acid_Burn77
Messages postés
25
Statut
Membre
-
Acid_Burn77 Messages postés 25 Statut Membre -
Acid_Burn77 Messages postés 25 Statut Membre -
Bonjour, je suis nouvelle en programmation et je dois faire un programme qui calcule le jour de pâques. jusque là il n'y pas de problème.. mais quand je veux rentrer dans les détails ça coince..
Enfaite je voudrais savoir:
-Comment faire pour tester que se soit bien des chiffres(int) qui on été rentrée et non des lettre(char).
-Et faire en sorte que la boucle face le calcule si c'est bien des chiffres qui sont entré (int)
je suis un peu perdue...:(
Enfaite je voudrais savoir:
-Comment faire pour tester que se soit bien des chiffres(int) qui on été rentrée et non des lettre(char).
-Et faire en sorte que la boucle face le calcule si c'est bien des chiffres qui sont entré (int)
je suis un peu perdue...:(
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:
#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; }
-
-
Merci pour ton aide, ça m'aura aidé, un peu plus. :) ça fait plaisir d'avancer:d