Pourquoi il ne calcule pas ?

Résolu
Kixool Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   -
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.

8 réponses

dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   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
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   135
 
sds
-1
Kixool Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
OK merci je vais essayer , je vous tiens au courant ...
-1
Kixool Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   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
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   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
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   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
dindoun Messages postés 1028 Date d'inscription   Statut Membre Dernière intervention   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