Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1451 connectés 

  FORUM HardWare.fr
  Programmation
  C

  code répétitif

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

code répétitif

n°2250016
1000
Posté le 03-02-2015 à 07:12:02  profilanswer
 

Bonjour à tous
 
Je suis débutant en c.
 
dans une partie de mon code je fais plusieurs test, avec message d'erreur.
je veux que la date saisie ne sois pas impossible, du genre 32/15/2000
 et du coup j'ai mis plusieurs test.
Est-il possible d’alléger ce code :
 
/**********verification de la validiter du mois************/
if (jour==0 ||mois==0 ||annee==0 || mois>12 || jour>31 )
{
printf ("veuillez saisir une date valide\n" );
return 0;
}
 
/* si les mois de 30 jours sont respecté */
if (mois==4 || mois==6 || mois==9 || mois==11)
    if (jour>30)
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
 
 
/* si la règle des 28 jours de février et du 29eme jours pour les années bissextilles est respecté */
if(annee % 4 == 0 || annee % 400 == 0)
     if (mois==2 && jour>29  )
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
if(annee % 4 != 0 || annee % 400 != 0)
    if (mois==2 && jour>28)
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
 
Merci pour votre aide

mood
Publicité
Posté le 03-02-2015 à 07:12:02  profilanswer
 

n°2250020
Hermes le ​Messager
Breton Quiétiste
Posté le 03-02-2015 à 09:21:21  profilanswer
 

1000 a écrit :

Bonjour à tous
 
Je suis débutant en c.
 
dans une partie de mon code je fais plusieurs test, avec message d'erreur.
je veux que la date saisie ne sois pas impossible, du genre 32/15/2000
 et du coup j'ai mis plusieurs test.
Est-il possible d’alléger ce code :
 
/**********verification de la validiter du mois************/
if (jour==0 ||mois==0 ||annee==0 || mois>12 || jour>31 )
{
printf ("veuillez saisir une date valide\n" );
return 0;
}
 
/* si les mois de 30 jours sont respecté */
if (mois==4 || mois==6 || mois==9 || mois==11)
    if (jour>30)
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
 
 
/* si la règle des 28 jours de février et du 29eme jours pour les années bissextilles est respecté */
if(annee % 4 == 0 || annee % 400 == 0)
     if (mois==2 && jour>29  )
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
if(annee % 4 != 0 || annee % 400 != 0)
    if (mois==2 && jour>28)
    {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }
 
Merci pour votre aide


 
http://stackoverflow.com/questions [...] ation-in-c

n°2250051
1000
Posté le 03-02-2015 à 12:38:55  profilanswer
 

Merci, mais dans ce cas, je ne vois pas comment je l'inclurais dans le code complet, car je suis trop novice et mon exercice correspond à un calcul se faisant sur 3 chiffres saisie à la suite (le jour, le mois, l'année)
et dans l'immédiat je ne vois pas comment découper l'information d'une date saisie.... je n'en suit qu'a mon 3eme exo en c.
mon code dans l'ensemble est bon, je cherche juste à réduire en me demandant s'il est possible de créer une fonction pour éviter la répétition :
   {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }  
 

n°2250057
Hermes le ​Messager
Breton Quiétiste
Posté le 03-02-2015 à 13:25:19  profilanswer
 


 
Ok. je pense que ton exercice consiste donc à "additionner les conditions"
 
tu peux donc utiliser des () supplémentaires pour tes conditions.
 
Exemple:
 
if ((blabla == 'oui' || blabla != 'truc') && (bloblo == 'zobi' || bloblo != blabla))
 

n°2250058
Hermes le ​Messager
Breton Quiétiste
Posté le 03-02-2015 à 13:28:18  profilanswer
 

1000 a écrit :

Merci, mais dans ce cas, je ne vois pas comment je l'inclurais dans le code complet, car je suis trop novice et mon exercice correspond à un calcul se faisant sur 3 chiffres saisie à la suite (le jour, le mois, l'année)
et dans l'immédiat je ne vois pas comment découper l'information d'une date saisie.... je n'en suit qu'a mon 3eme exo en c.
mon code dans l'ensemble est bon, je cherche juste à réduire en me demandant s'il est possible de créer une fonction pour éviter la répétition :
   {
        printf("veuillez saisir une date valide\n" );
        return 0;
    }  
 


 
Et tu peux aussi créer une fonction de validation:
 
int validate(int day, int month, int year) {
     // Validate conditions
     ...
     ... return 1; // si pas bon
     ... return 0; // si bon
}
 
et ensuite tu pourras tester comme cela:
 
if (validate(date) == 0)
{
    // ok
}
else
{
   // pas ok
}


Message édité par Hermes le Messager le 03-02-2015 à 13:30:51
n°2250061
rufo
Pas me confondre avec Lycos!
Posté le 03-02-2015 à 13:54:41  profilanswer
 

Tu pourrais même faire un tableau qui contient pour chaque mois, le nb de jours, sauf pour février où tu mets 0. Dans ce cas, tu calcules si c'est 28 ou 29j. Ainsi, en fonction du n° de mois - 1, t'as direct le nb de jours dans le tableau ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2250090
1000
Posté le 03-02-2015 à 19:53:24  profilanswer
 

Merci pour votre aide, je cherchais justement comment faire sous la forme d'une fonction  
parfait


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  code répétitif

 

Sujets relatifs
Comment executer un code sur des combobox dès l'ouverture de word ?pourquoi ce code ne recupère plus une partie de code source d'une url?
modifier archive tar en une seule ligne de codeParser du code Ada pour colorer et indenter automatiquement le texte !
Problème sur l'entame de ce codeWEB / Lecture code barre
incorporer plusieurs variables dans du code pythonprob avec mon code
prob avec mon codeCode html pour "connexion" avec identifiant et mot de passe
Plus de sujets relatifs à : code répétitif


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR