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
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...:(
A voir également:

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
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.
0
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
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..
0
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
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;
}
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
Merci pour ton aide, ça m'aura aidé, un peu plus. :) ça fait plaisir d'avancer:d
0