Pourquoi il ne calcule pas ?

Résolu
Kixool Messages postés 6 Statut Membre -  
dindoun Messages postés 1047 Statut Membre -
Bonjour à tous,

Je suis un peu débutant en programmation et je voulais savoir pour il ne voulais pas calculer ce que je lui demande ...

Pour information, mon programme est un calculateur du jour de la semaine a partir d'une date entrée par l'utilisateur sous la forme : jour/mois/année

J'ai peu etre oublié quelque chose, je travaille sous XP avec codeblocks.

Voici le code :

#include <stdio.h>
#include <math.h>
#include <stdlib.h>


int main ()

{
    int a; // Jours
    int b; // Mois
    int c; // Années
    int s; // Le siecle de l'année recherchée
    int p; //  Le numéro de l'année correspondant au siècle
    int k; //solution

    {
    printf("Tapez le numéro du jour de la date recherchee\n");
    scanf("%d",&a);
    printf("Tapez le numéro du mois de la date recherchee\n");
    scanf("%d",&b);
    printf("Tapez le numéro de l'annee de la date recherchee\n");
    scanf("%d",&c);
    s=c/100;
    p=c%100;
    k=a+(48*b-1)/5+p/4+p+s/4-2*s;
            if (k%10==0)
            {
                printf ("Le jour de la semaine est Lundi\n");
            }

                if (k%10==0)
            {
                printf ("Le jour de la semaine est Mardi\n");
            }
            if (k%10==1)
            {
                printf ("Le jour de la semaine est Mercredi\n");
            }
            if (k%10==2)
            {
                printf ("Le jour de la semaine est Jeudi\n");
            }
            if (k%10==3)
            {
                printf ("Le jour de la semaine est Vendredi\n");
            }
            if (k%10==4)
            {
                printf ("Le jour de la semaine est Samedi\n");
            }
            if (k%10==5)
            {
                printf ("Le jour de la semaine est Dimanche\n");
            }

    }

    return 0;
}


Merci d'avance pour toutes vos suggestions.
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. dindoun Messages postés 1047 Statut Membre 135
     
    salut,

    1.
    if (k%10==0)
    {
    printf ("Le jour de la semaine est Lundi\n");
    }

    if (k%10==0)
    {
    printf ("Le jour de la semaine est Mardi\n");
    }

    forcément tu peux pas avoir en même temps lundi et mardialors qu ici tu as le même test

    2.
    ta formule k=a+(48*b-1)/5+p/4+p+s/4-2*s;
    on pose Z=(48*b-1)/5+p/4+p+s/4-2*s
    Z est constant pour un mois donné
    k=a+Z

    on voit que a peut varier de 1 à 28,29,30 ou 31 selon lemois
    donc k%10 peut varier de 0 à 9 ce qui fait 10 tests

    es-tu sur que ce n'est pas plutot k%7?
    -1
  2. dindoun Messages postés 1047 Statut Membre 135
     
    sds
    -1
  3. Kixool Messages postés 6 Statut Membre
     
    OK merci je vais essayer , je vous tiens au courant ...
    -1
  4. Kixool Messages postés 6 Statut Membre
     
    Voilà j'ai test avec ce nouveau code :

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    
    int main ()
    
    {
        int a; // Jours
        int b; // Mois
        int c; // Années
        int s; // Le siecle de l'année recherchée
        int p; //  Le numéro de l'année correspondant au siècle
        int k; //solution
        int z; //L'opération permettant de trouver la solution
    
        {
        printf("Tapez le numéro du jour de la date recherchee\n");
        scanf("%d",&a);
        printf("Tapez le numéro du mois de la date recherchee\n");
        scanf("%d",&b);
        printf("Tapez le numéro de l'annee de la date recherchee\n");
        scanf("%d",&c);
        s=c/100;
        p=c%100;
        z=(48*b-1)/5+p/4+p+s/4-2*s;
        k=a+z;
    
    
                if (k%10==0)
                {
                    printf ("Le jour de la semaine est Lundi\n");
                }
    
                    if (k%10==1)
                {
                    printf ("Le jour de la semaine est Mardi\n");
                }
                if (k%10==2)
                {
                    printf ("Le jour de la semaine est Mercredi\n");
                }
                if (k%10==3)
                {
                    printf ("Le jour de la semaine est Jeudi\n");
                }
                if (k%10==4)
                {
                    printf ("Le jour de la semaine est Vendredi\n");
                }
                if (k%10==5)
                {
                    printf ("Le jour de la semaine est Samedi\n");
                }
                if (k%10==6)
                {
                    printf ("Le jour de la semaine est Dimanche\n");
                }
    
        }
    
        return 0;
    }


    La ca devrait aller mais quand je tappe mon année , par exemple 2004 et que je valide ca ferme la fenetre...
    Pourquoi est ce qu'il ne me donne pas un chiffre au dessous ?
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dindoun Messages postés 1047 Statut Membre 135
     
    salut,
    j'ai copier coller ton code dans un éditeur de texte
    puis gcc fichier.c ( je suis sous linux )
    et ca marche sans erreur (sauf que le 1/10/2008 n'est pas mardi )
    -1
  7. dindoun Messages postés 1047 Statut Membre 135
     
    et puis je penssais qu il fallait changer tous tes k%10 par k%7
    le passage par z ne devait servir qu'a te montrer que ta fomule était fausse
    -1
  8. dindoun Messages postés 1047 Statut Membre 135
     
    pour être plus clair sur le %7 :

    on a z fixé ( un mois une année )
    si a = 1 alors k = 1 + z et k%10 = 1 + z%10
    si a = 8 alors k = 8 + z et k%10 = 8 + z%10 qui n'est pas égal à 1 + z%10 alors que ça devrait

    si tu prends %7 :

    si a = 1 alors k = 1 + z et k%7 = 1 + z%7
    si a = 8 alors k = 8 + z et k%7 = 1 + z%7
    -1
  9. dindoun Messages postés 1047 Statut Membre 135
     
    après une vingtaine d'essais :
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>

    int main ()

    {
    int a; // Jours
    int b; // Mois
    int c; // Années
    int s; // Le siecle de l'année recherchée
    int p; // Le numéro de l'année correspondant au siècle
    int k; //solution
    int z; //L'opération permettant de trouver la solution
    int jour;

    {
    printf("Tapez le numéro du jour de la date recherchee\n");
    scanf("%d",&a);
    printf("Tapez le numéro du mois de la date recherchee\n");
    scanf("%d",&b);
    printf("Tapez le numéro de l'annee de la date recherchee\n");
    scanf("%d",&c);
    s=c/100;
    p=c%100;
    z=(48*b-1)/5+p/4+p+s/4-2*s;
    k=a+z;

    k=k+1;
    jour=k%7;

    if (jour==0)
    {
    printf ("Le jour de la semaine est Lundi\n");
    }

    if (jour==1)
    {
    printf ("Le jour de la semaine est Mardi\n");
    }
    if (jour==2)
    {
    printf ("Le jour de la semaine est Mercredi\n");
    }
    if (jour==3)
    {
    printf ("Le jour de la semaine est Jeudi\n");
    }
    if (jour==4)
    {
    printf ("Le jour de la semaine est Vendredi\n");
    }
    if (jour==5)
    {
    printf ("Le jour de la semaine est Samedi\n");
    }
    if (jour==6)
    {
    printf ("Le jour de la semaine est Dimanche\n");
    }

    }

    return 0;
    }
    -1