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 :

projet calendrier annuel


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut projet calendrier annuel
    bonjour tout le monde,

    En effet, voilà une semaine que je planche sur un projet en C...et je n'avance que très lentement.Alors je me suis rendu sur ce site en esperant trouver de l'aide!!

    Je suis amené à realisé un programme qui affiche le calendrier de n'importe quel année entrée au clavier !!!
    ( le programme ne doit pas contenir les fonctions)
    y a-t-il quelqu'un qui peut me donner un coup de main??
    marci d'avance!

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kate.f Voir le message
    En effet, voilà une semaine que je planche sur un projet en C...et je n'avance que très lentement.Alors je me suis rendu sur ce site en esperant trouver de l'aide!!

    Je suis amené à realisé un programme qui affiche le calendrier de n'importe quel année entrée au clavier !!!
    ( le programme ne doit pas contenir les fonctions)
    y a-t-il quelqu'un qui peut me donner un coup de main??
    Tu as oublié de poster le code avec lequel tu as un problème...

    Ici, c'est le "forum du langage C" et non "Je fais faire mes devoirs par les autres pigeons..."

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Le programme ne doit pas contenir de fonction? C'est quoi ces consignes à la noix?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Par défaut projet calendrier annuel
    bon voici le code, mais je ne voi pa ou est le probleme:
    [CODE]
    #include <stdio.h>
    #include <stdlib.h>

    main()
    {
    int an;
    printf("quelle annee?");
    scanf("%d",&an);


    //le 1 janvier tombe a kel jour

    int premierjanvier;
    int a=(an-1)/4;
    int b=(an-1)/100;
    int c=(an-1)/400;

    int d=(an+a+c-d)%7;
    if (--d==-1) { premierjanvier= 6;}
    else { premierjanvier=d;}

    // l'annee est elle bissextile?
    // 1=oui 0=non

    int bissextille;
    { if((an%4==0 && an%100!=0) || (an%400==0))
    bissextille=1;

    else bissextille=0;}



    //
    int joursparmois,jour,mois;
    int janv1 =premierjanvier;
    int tj[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    const char *tm[] = {"","JANVIER","FEVRIER","MARS","AVRIL",

    "MAI","JUIN","JUILLET","AOUT","SEPTEMBRE",

    "OCTOBRE","NOVEMBRE","DECEMBRE"};
    // ffichage
    for(mois = 1; mois <= 12; mois++)

    {

    printf("\n\n\t\t\t%s %d", tm[mois], an);

    printf("\n\t\t\t---------------------------------");

    printf("\n\t\t\tLun Mar Mer Jeu Ven Sam Dim\n\t\t\t");

    if (joursparmois = mois == 2 )

    joursparmois=(tj[mois] + bissextille) ;
    else
    joursparmois=tj[mois];
    //

    for(jour = 1; jour <= 1 + janv1 * 5; jour++)

    printf(" ");

    for(jour = 1; jour <= joursparmois; jour++)

    {

    printf("%2d", jour);

    if((jour + janv1) % 7 > 0 )

    printf(" ");

    else

    printf(" \n\t\t\t ");

    }
    janv1 = (janv1 + joursparmois) % 7;

    }

    printf("\n\n" );


    printf("%d",joursparmois);


    system("PAUSE");
    return 0;

    }

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Refus des fonctions ?
    Change de prof. Avant qu'il ne soit trop tard.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kate.f Voir le message
    bon voici le code, mais je ne voi pa ou est le probleme:
    Tu peux déjà commencer par régler correctement ton compilateur et corriger ç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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:5: warning: return type defaults to `int'
    main.c:5: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:53: warning: suggest parentheses around assignment used as truth value
    main.c:15: warning: unused variable `b'
    main.c:18: warning: 'd' might be used uninitialized in this function
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 5 warnings

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par kate.f Voir le message
    une remarque pour Thierry chappuis:

    ne pas utiliser de fonctions c a d les fonctions de ce genre la:
    (voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int plus(int a,int b)
    {   a=a+b;
        return a;       }
    )
    C'est bien ce que j'avais compris, mais c'est la première fois qu'on me la fait celle-là. En général, on essaie d'insister auprès des étudiants pour qu'ils factorisent leur code au maximum.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kate.f Voir le message
    en fait le prof voulait k'on metrise les deux choses!
    SMS Interdit. Post effacé.

  9. #9
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    Citation Envoyé par kate.f Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <stdio.h>
    #include <stdlib.h>
     
    main()
    déclarer le type de retour de main.

    Citation Envoyé par kate.f Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           //le 1 janvier tombe a kel jour
     
           int premierjanvier;
           int a=(an-1)/4;
           int b=(an-1)/100;
           int c=(an-1)/400;
     
           int d=(an+a+c-d)%7;
    la vraie formule c'est
    Citation Envoyé par kate.f Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           if   (--d==-1)    {  premierjanvier= 6;}
           else     {  premierjanvier=d;}
    ça, je ne le mettrais pas (cause des pb lors de l'affichage).

    Citation Envoyé par kate.f Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           // l'annee est elle bissextile?
           // 1=oui    0=non
     
           int bissextille;
         {  if((an%4==0   &&   an%100!=0)   ||     (an%400==0))
                                bissextille=1;
     
           else                 bissextille=0;}
    intérêt des accolades ???

    Ceci dit, les erreurs semblent mineures et une analyse rigoureuse permet de les corriger. Voici un exemple de code qui fonctionne.

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main() {
        int annee;
        int premierjanvier, a, b, c;
        int bissextille=0;
        int joursparmois, jour, mois, sem, jour1;
        int tj[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        const char *tm[] = {"","JANVIER","FEVRIER","MARS","AVRIL","MAI","JUIN",
                 "JUILLET","AOUT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DECEMBRE"};
     
        // definition de l'annee
        printf("quelle annee ?\n");
        scanf("%d",&annee);
     
        // le 1 janvier tombe quel jour
        a = ( annee - 1) / 4;
        b = ( annee - 1) / 100;
        c = ( annee - 1) / 400;
        premierjanvier = (7 + annee + a - b + c) % 7; // dim=0, lun=1, mar=2, ...
     
        // l'annee est-elle bissextile ? 1=oui 0=non (par defaut)
        if ( (annee%4==0 && annee%100!=0) || (annee%400==0) ) {
            bissextille=1;
        }
     
        // affichage
        jour1=premierjanvier;
        for (mois=1;mois<=12;mois++) {
            printf("\n%s %d\n",tm[mois],annee);
            printf("---------------------------------\n");
            printf("Lun  Mar  Mer  Jeu  Ven  Sam  Dim\n");
            if ( mois == 2 ) {
                joursparmois = tj[mois] + bissextille;
            } else {
                joursparmois = tj[mois];
            }
            sem = jour1 - 1;
            if ( sem==-1 ) {
                sem=6;
            }
            for (jour=0;jour<sem;jour++) {
                if ( jour == 0 ) {
                    printf("   ");
                } else {
                    printf("     ");
                }
            }
            for (jour=1;jour<=joursparmois;jour++) {
                sem = (jour + jour1 - 1) % 7;
                sem--;
                if ( sem==-1 ) {
                    sem=6;
                }
                if ( sem == 0 ) {
                    printf(" %2d",jour);
                } else if ( sem == 6 ) {
                    printf("   %2d\n",jour);
                } else {
                    printf("   %2d",jour);
                }
            }
            printf("\n\n" );
            jour1 = (jour1 + joursparmois) % 7;
        }
     
        return 0;
    }

Discussions similaires

  1. Calendrier annuel
    Par javatwister dans le forum Téléchargez
    Réponses: 4
    Dernier message: 10/06/2015, 14h20
  2. [PHP 5.2] Numéros de semaine dans calendrier annuel
    Par p4ndore dans le forum Langage
    Réponses: 5
    Dernier message: 01/08/2011, 17h15
  3. [AJAX] Calendrier annuel dynamique en ajax / php
    Par [root@127.0.0.1]~# dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/04/2008, 14h59
  4. Calendrier annuel - Probleme - 754 controles max
    Par branqueira dans le forum Access
    Réponses: 27
    Dernier message: 15/02/2007, 12h34
  5. Comment creer un calendrier annuel
    Par Ericeric dans le forum Delphi
    Réponses: 1
    Dernier message: 19/11/2006, 17h27

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