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   -
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   Statut Contributeur Dernière intervention   340
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   340
 
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   Statut Membre Dernière intervention   2
 
Merci pour ton aide, ça m'aura aidé, un peu plus. :) ça fait plaisir d'avancer:d
0