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

Résolu
Acid_Burn77 Messages postés 25 Statut Membre -  
Acid_Burn77 Messages postés 25 Statut Membre -
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

  1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    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
  2. Acid_Burn77 Messages postés 25 Statut Membre 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
    1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
       
      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
  3. Acid_Burn77 Messages postés 25 Statut Membre 2
     
    Merci pour ton aide, ça m'aura aidé, un peu plus. :) ça fait plaisir d'avancer:d
    0