Partage
  • Partager sur Facebook
  • Partager sur Twitter

format date en c

    1 janvier 2012 à 13:48:04

    Bonsoir & bonne année
    je suis nouvelle ici et j espère recevoir vos réponses

    en fait je me noie dans un exercice et j 'ai besoin d'aide svplé
    je dois ecrire une fonction qui demande une date et vérifie la validité de la date qui doit etre sous la forme d une chaine de caractere ( jj/mm/aaaa)

    exigences:
    *utiliser une fonction int verifier (char ch[]) ( qui vérifie la validité de la date )et des variables booléennes
    transformer les caractère vers des chiffres
    *l'année doit contenir 4 chiffres( aaaa) et doit etre à partir de 1000
    *faut prendre en consideration que le mois de février compte 28 jours sauf si l’année est bissextile, auquel cas il en compte 29. L’année est bissextile si elle est divisible par quatre. Toutefois, les années divisibles par 100 ne sont pas bissextiles, mais les années divisibles par 400 le sont....
    *faut prendre en consideration si l utilisateur tape par exemple jj:mm:aaaa
    en tous cas faut afficher une date sous la forme jj/mm/aaaa ( 10 caractères)

    mon programme :
    #include <conio.h>
    #include <stdio.h>
    //fonction qui verifie si une année est bisextille ou pas
    int bisextille (int annee)
    {
    int res = 1;
    if ((annee % 400 == 0) || ((annee % 100 != 0) && (annee % 4 == 0)))
    res = 1;
    else
    res = 0;
    return res;
    }
    //fonction qui vérifie que jour mois annee en nombre est valide
    int estDateNumeriqueValide(int jour, int mois, int annee)

    {
    int bis;
    int A,B,C,D;
    int valide=1;



    bis=(bisextille(annee));
    // 7 mois ont 31 jours
    // 4 mois ont 30 jours
    //1 mois a 28 ou 29 jours selon l'année si elle est bisextille ou pas

    A=(mois==1 || mois==3 || mois==5 || mois==7 || mois==8 || mois==10 || mois==12)&& (jour>0 && jour<=31);
    B=(mois==4 || mois==6 || mois==9 || mois==11) && (jour>0 && jour<=30);
    C= mois==2 && (jour>0 && jour<=28);
    D= mois==2 && (jour>0 && jour<=29);

    if(bis) //si l annee est bisextile
    if(A || B || D)
    valide=1; //la date en nombre est correcte
    else //sinon
    valide=0;//la date n 'est pas correcte

    else //si l 'année n est pas bisextille
    if(A || B || C)
    valide=1;
    else
    valide=0;
    return valide;
    }
    //fonction qui saisie la date
    void saisieDate (int jour, int mois, int annee)
    {
    do
    {
    printf ("\t\t\tEntrez la date (jour/mois/annee)\n\n\n" );
    printf ("jour : " );
    scanf ("%d", &jour);
    printf ("mois : " );
    scanf ("%d",&mois);
    printf ("annee : " );
    scanf ("%d", &annee);
    } while (!(estDateNumeriqueValide (jour, mois, annee)));
    }



    MAIS ME RESTE PAS MAL DE CHOSES à FAIRE :
    convertir les caractère en nombre
    vérifier le format de la chaine date 'JJ/MM/AAAA' ) ( en utilisant une fonction int FormatDate ) ...

    pour vérifier le format de la chaine je crois qu il faut calculer la longueur de la chaine , le plus facil c de demander la date en 3 fois ,on calcul la longueur des jours et des mois par exemple (longueur_j=2) aprés si (longueur_j==2) c gagné on affiche le jour et le mois sinon un envoie un msg d erreur , de meme pour la longueur des année sauf qu il faut l initialisé par 4 (longueur_aaaa=4)
    c bien ça??
    depuis hier j essaye de faire cet exercice mais je blouqe si vous pouvez m aider un peu je serai trés reconnaissante ,
    merci d avance
    (
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 janvier 2012 à 14:04:57

      Mais les balises de code stp (<code type="c"></code>)
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2012 à 14:11:28

        Tu récupère ta date de cette facon:

        scanf("%d/%d/%d", &jour, &mois, &annee
        


        Ou alors tu récupère ta chaine de caractère et fait une lecture inverse de la chaine

        aide: pour convertir un chiffre écrit en caractère tu doit lui retiré '0'(soit la valeur 0 en ASII)

        17 peut s'écrire 1*10 + 1*7.
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2012 à 15:14:23

          Le message qui suit est une réponse automatique.
          Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
          Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


          Merci d'utiliser les balises de code


          Bonjour,

          Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
          Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

          De plus, veille à ce que ton code soit correctement indenté.

          Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

          Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

          Voici un exemple de code non coloré (mauvais exemple) :
          int main(int argc, char *argv[])
          {
          long choixOperation;

          printf("Choisissez l'operation a effectuer");
          /* etc. */
          }

          Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
          int main(int argc, char *argv[])
          {
              long choixOperation;
          
              printf("Choisissez l'operation a effectuer");
              /* etc. */
          }
          


          C'est plus clair n'est-ce pas ? ;)

          Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

          Merci de ta compréhension. :)
          • Partager sur Facebook
          • Partager sur Twitter

          format date en c

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown