IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programme à réaliser en C(petit probl)


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut Programme à réaliser en C(petit probl)
    Bonjour voila je doit réaliser un programme ayan comme enoncer ceci :

    L'utilisateur introduit la valeur d'une année ainsi qu'un numéro de trimestre
    Au cas ou la date correspondant a la fin du trimestre dépasse la date du jour(date que je met directement dans une variable), affichez uniquement un message d'erreur.

    Ensuite , l'utilisateur encode les valeurs de 2 dates sous la forme AAAAMMJJ .
    Dans la mesure ou la premiere date est <= à la deuxiéme , vérifiez qu'au moins un jour de l'intervalle formé par ces 2 date est repris dans le trimestre de l'année concernée.Affichez un message adéquat.


    Bon voila ce que j'ai deja fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
     
    #include <mylib.h>
    #include <stdio.h>
     
     
     
    long int annee = 0;
    long int trimestre = 0;
    long int datepc  = 20061125;
    long int finpremier ;
    long int findeuxieme;
    long int fintroisieme;
    long int finquatrieme;
     
               int main ()
     
    {
        cls (BLEU);
        gotoxy (1, 1); printf ("%45s", "DEVOIR");
    	gotoxy (2, 1); printf ("%45s", "=====================");
    	gotoxy (4, 1); printf ("   Annee :        :");
    	lire_long_int (&annee, 4, 28, 4, 1, 2999);
    	gotoxy (5, 1); printf ("   Trimestre :        :");
    	lire_long_int (&trimestre, 5, 28, 1, 0, 9);
        finpremier = (annee * 10000 )+ 331 ;
        findeuxieme =(annee * 10000 )+ 630 ;
        fintroisieme =(annee * 10000 )+ 930 ;
        finquatrieme =(annee * 10000 )+ 1203 ;
     
       if ((trimestre ==1 )&& (finpremier > datepc )){
           gotoxy (9, 1); printf ("ERREUR \n");
           system ("pause");
     
     
       }/* end if  */
     
           else  {
     
              if ((trimestre ==2 )&& (findeuxieme > datepc )){
                  gotoxy (9, 1); printf ("ERREUR \n");
                  system ("pause");
              } /* end if  */
     
              else  {
     
                     if ((trimestre ==3 )&& (fintroisieme > datepc )){
                         gotoxy (9, 1); printf ("ERREUR \n");
                         system ("pause");
                      } /* end if  */
     
     
                       else  {
     
                              if ((trimestre ==4 )&& (finquatrieme > datepc )){
                                 gotoxy (9, 1); printf ("ERREUR \n");
                                 system ("pause");
     
                              } /* end if  */
     
     
                              else {
     
                                   gotoxy (10, 1); printf ("date du jour: %ld  \n\n\n",  datepc);
                                   system ("pause");
     
              }
                 }
     
                       }
     
     
                              }
     
     
     
     
     
        system ("pause");
    	return 0;
     
     } /* end main  */
    Si quelqu'un aurait une idée ou plusieur lol je les prend toute merci d'avance

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Déjà quelques remarques :
    • Commente ton code;
    • Utilises les fonctions (le bloc qui vérifie la date revient 4 fois; tu aurais pu en faire une fonction) pour améliorer la lisibilité.
      Concernant la date de fin de trimestre, tu pourrais aussi simplifier en utilisant un tableau indexé par le trimestre;
    • Pourquoi utiliser des long int pour stocker des nombres d'au plus 4 chiffres ?
    • En cas d'erreur, ton main() renvoie la même valeur qu'en cas de succès.


    Tu n'as pas posé de question dans ton post...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    en fait je commencer seuleument le language c et pour le moment je n'ai vu que long int , double et char .

    Ensuite le raccourcir en 1 fonction , je voix pas comment , et je viens de m'apercevoir que le code n'est pas bon pour ce que je veux obptenir pfffff

  4. #4
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Par exemple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #include <mylib.h>
    #include <stdio.h>
     
    long int annee = 0;
    long int trimestre = 0;
    long int datepc  = 20061125;
    long int finTrimestre[4];
     
    int verifierDate(long int *_finTrimestre, long int _datepc) {
        int i;
        for (i = 0; i < 4; i++) {
            if (_finTrimestre[i] < _datepc)
                return 1;
        }
        return 0;
    }
     
    int main ()
    {
        cls (BLEU);
        gotoxy (1, 1); printf ("%45s", "DEVOIR");
    	gotoxy (2, 1); printf ("%45s", "=====================");
    	gotoxy (4, 1); printf ("   Annee :        :");
    	lire_long_int (&annee, 4, 28, 4, 1, 2999);
    	gotoxy (5, 1); printf ("   Trimestre :        :");
    	lire_long_int (&trimestre, 5, 28, 1, 0, 9);
     
        finTrimestre[0] = (annee * 10000 )+ 331 ;
        finTrimestre[1] =(annee * 10000 )+ 630 ;
        finTrimestre[2] =(annee * 10000 )+ 930 ;
        finTrimestre[3] =(annee * 10000 )+ 1203 ;
     
        if (verifierDate(finTrimestre, datepc) != 0) {
           gotoxy (9, 1); printf ("ERREUR \n");
           system ("pause");
        }
        else {
            gotoxy (10, 1); printf ("date du jour: %ld  \n\n\n",  datepc);
            system ("pause");
        }
     
        system ("pause");
        return 0;
     } /* end main  */
    Je n'ai pas testé si ça compile. Et le code reste moche.
    Ah, et en plus, j'ai oublié de parler des variables globales !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    oui c'est surement une solution , mais je doit effectuer l'exercice avec les condition OR ,AND

  6. #6
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par conceicao
    oui c'est surement une solution , mais je doit effectuer l'exercice avec les condition OR ,AND
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    if (
            ((trimestre ==1 )&& (finpremier > datepc))
         || ((trimestre ==2 )&& (findeuxieme > datepc))
         || ((trimestre ==3 )&& (fintroisieme > datepc))
         || ((trimestre ==4 )&& (finquatrieme > datepc))
      ) {
         gotoxy (9, 1); printf ("ERREUR \n");
    } else {
         gotoxy (10, 1); printf ("date du jour: %ld  \n\n\n",  datepc);
    }
    system("pause");
    ...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    oui c'est que j'avais mios au dessus , mais j'obtien pas ce que ll'enoncer veut.

    car finpremier = (annee * 10000 )+ 331 donc par exemple 20060331 et datepc = 20061122 donc si je fais finpremier >datepc cela reviens a faire 20060331 >20061122 ce qui n'est pas vrais donc j'ai un probléme avec ca faudrait trouver un autre systéme

  8. #8
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par conceicao
    oui c'est que j'avais mios au dessus
    Pas tout à fait. Le mien est plus compact et plus lisible (enfin, à mon avis)...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    a oui c sur que le tiens est plus compact ect... mais au final je n'obtiens pas ce que l'enoncer demander c ca mon probléme pour le moment

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    bonjour,
    je comprends pas ton énoncé, il sont où les 2 dates saisies par l'utilisateur au format AAAAMMJJ.
    et c'est quoi exactement le problème avec 20060331 >20061122??

  11. #11
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par coca25
    bonjour,
    je comprends pas ton énoncé, il sont où les 2 dates saisies par l'utilisateur au format AAAAMMJJ.
    et c'est quoi exactement le problème avec 20060331 >20061122??
    Bonnes questions.
    Je ne comprends pas non plus le problème avec "20060331>20061122".
    L'énoncé dit que tu dois tester si la date du jour (donc le 22/11 dans ton exemple) est inférieure à la date de fin du trimestre (donc 31/03). C'est bien ce que fait le test.
    Donc, c'est bon.

    J'ai testé ton code (après avoir fait le ménage, parce que tel que tu l'as posté, 'il ne compile pas), et le résultat de l'exécution est celui attendu.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    on saisis 2 date manuellement.

    oui il va faire le test si la date 20060331>20061122".

    mais 20060331 n'est pas supérieure à 20061122 c ca le probléme

  13. #13
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par conceicao
    L'utilisateur introduit la valeur d'une année ainsi qu'un numéro de trimestre
    Au cas ou la date correspondant a la fin du trimestre dépasse la date du jour(date que je met directement dans une variable), affichez uniquement un message d'erreur.
    Je traduis ton énoncé en formule :
    date de fin du trimestre = 20060331
    date du jour = 20061122
    Si date de fin du trimestre > date du jour, i.e. 20060331>20061122, afficher message d'erreur.

    Donc le test à effectuer est :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    si trimestre = 1 et 20060331>20061122, alors ERREUR
    sinon si trimestre = 2 et 20060630>20061122, alors ERREUR
    ...
    sinon ok
    Et c'est bien celui qui est fait dans le code que tu nous as donné.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par conceicao
    on saisis 2 date manuellement.

    oui il va faire le test si la date 20060331>20061122".

    mais 20060331 n'est pas supérieure à 20061122 c ca le probléme
    alors la je nage... pourquoi tu voudrais que ca soit superieur

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par coca25
    alors la je nage... pourquoi tu voudrais que ca soit superieur
    supérieur car le signe > c supérieur non?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par zooro
    Je traduis ton énoncé en formule :
    date de fin du trimestre = 20060331
    date du jour = 20061122
    Si date de fin du trimestre > date du jour, i.e. 20060331>20061122, afficher message d'erreur.

    Donc le test à effectuer est :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    si trimestre = 1 et 20060331>20061122, alors ERREUR
    sinon si trimestre = 2 et 20060630>20061122, alors ERREUR
    ...
    sinon ok
    Et c'est bien celui qui est fait dans le code que tu nous as donné.
    oui mais le programme ne marquera jamais erreur car 20060331 ne sera jamais supérieur à 20061122 dans tous les cas , c ca que je comprend pas lol

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    Au cas ou la date correspondant a la fin du trimestre dépasse la date du jour(date que je met directement dans une variable), affichez uniquement un message d'erreur.
    t'as du mal t'exprimer alors parce que c'est pas ce qui est dans l'enonce.
    date correpondant à la fin du trimestre: 20060331
    date du jour: 20061122

    date de fin de trimestre ne depasse pas la date du jour ==> donc on n'affiche pas d'erreur.


    mais la on est loin du C

  18. #18
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par conceicao
    oui mais le programme ne marquera jamais erreur car 20060331 ne sera jamais supérieur à 20061122 dans tous les cas , c ca que je comprend pas lol
    T'as essayé ton code ?
    Trimestre = 1, année = 2006 ==> pas d'erreur, c'est normal : le trimestre saisi est terminé (dateFinTrimestre < dateDuJour)
    Trimestre = 2, année = 2006 ==> idem
    Trimestre = 3, année = 2006 ==> idem
    Trimestre = 4, année = 2006 ==> ERREUR, c'est normal : le trimestre saisi est en cours (dateFinTrimestre > dateDuJour)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    c'est vrai j'arrive pas vraiment à saisir l'enoncer

    L'utilisateur introduit la valeur d'une année ainsi qu'un numéro de trimestre
    Au cas ou la date correspondant a la fin du trimestre dépasse la date du jour(date que je met directement dans une variable), affichez uniquement un message d'erreur.

    Ensuite , l'utilisateur encode les valeurs de 2 dates sous la forme AAAAMMJJ .
    Dans la mesure ou la premiere date est <= à la deuxiéme , vérifiez qu'au moins un jour de l'intervalle formé par ces 2 date est repris dans le trimestre de l'année concernée.Affichez un message adéquat.

  20. #20
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par conceicao
    c'est vrai j'arrive pas vraiment à saisir l'enoncer
    Bon, on recommence...

    Citation Envoyé par conceicao
    L'utilisateur introduit la valeur d'une année ainsi qu'un numéro de trimestre
    Au cas ou la date correspondant a la fin du trimestre dépasse la date du jour(date que je met directement dans une variable), affichez uniquement un message d'erreur.
    Tu attends la saisie de deux entiers (trimestre et année). Dans une variable locale, tu as stocké la date du jour (mettons 20061122).
    Tu fais le test que tu as donné dans le premier post.
    Voilà, c'est fini.

    Pour l'utilité de l'exercice, imagine que tu as un logiciel de gestion, par exemple, et que tu cherches les données d'un trimestre particulier. Tu ne pourras les afficher que si le trimestre demandé est terminé. Pour tester celà, tu dois vérifier que dateFinTrimestre<dateDuJour.

    Citation Envoyé par conceicao
    Ensuite , l'utilisateur encode les valeurs de 2 dates sous la forme AAAAMMJJ .
    Dans la mesure ou la premiere date est <= à la deuxiéme , vérifiez qu'au moins un jour de l'intervalle formé par ces 2 date est repris dans le trimestre de l'année concernée.Affichez un message adéquat.
    Là, tu attends la saisie de deux long (les deux dates). Tu vérifies ensuite que la première est inférieure à la seconde, et qu'au moins un jour de la période considérée appartient au trimestre donné précédemment.
    Voilà.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2012, 13h39
  2. Apple va lancer son programme d'assistance aux petites entreprises
    Par Katleen Erna dans le forum Actualités
    Réponses: 0
    Dernier message: 28/02/2011, 19h49
  3. Programme pour compiler des petits fichiers java
    Par Invité dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/09/2010, 16h22
  4. Demande d'aide pour la réalisation d'un petit jeu video
    Par Frank1010 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 08/09/2009, 07h59
  5. [Syntaxe] PETIT probl avec un Jlabel
    Par blackcrow1981 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 14/09/2006, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo