En langage C : if; while..do; while.. autre

Résolu
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...:(

3 réponses

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