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
- Bash do while ✓ - Forum Shell
- D langage c ✓ - Forum C
- Factorielle en c boucle while - Forum C
- Et en langage c - Astuces et Solutions
- Langage ascii - Guide
3 réponses
ghuysmans99
Messages postés
2495
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
337
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
2495
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
337
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