En langage C : if; while..do; while.. autre
Résolu/Fermé
Acid_Burn77
Messages postés
23
Date d'inscription
jeudi 29 avril 2010
Statut
Membre
Dernière intervention
27 juin 2014
-
29 avril 2010 à 21:06
Acid_Burn77 Messages postés 23 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 27 juin 2014 - 30 avril 2010 à 21:49
Acid_Burn77 Messages postés 23 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 27 juin 2014 - 30 avril 2010 à 21:49
A voir également:
- En langage C : if; while..do; while.. autre
- Langage ascii - Guide
- Débuter langage batch windows - Guide
- Symboles langage sms - Forum Samsung
- Langage binaire - Guide
- Quotient rationnel langage c ✓ - Forum C
3 réponses
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
338
29 avril 2010 à 22:46
29 avril 2010 à 22:46
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.
Acid_Burn77
Messages postés
23
Date d'inscription
jeudi 29 avril 2010
Statut
Membre
Dernière intervention
27 juin 2014
2
29 avril 2010 à 23:37
29 avril 2010 à 23:37
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..
ghuysmans99
Messages postés
2496
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
338
30 avril 2010 à 07:12
30 avril 2010 à 07:12
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; }
Acid_Burn77
Messages postés
23
Date d'inscription
jeudi 29 avril 2010
Statut
Membre
Dernière intervention
27 juin 2014
2
30 avril 2010 à 21:49
30 avril 2010 à 21:49
Merci pour ton aide, ça m'aura aidé, un peu plus. :) ça fait plaisir d'avancer:d