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 -
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 :
Merci d'avance pour toutes vos suggestions.
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.
A voir également:
- Pourquoi il ne calcule pas ?
- Comment on calcule une moyenne - Guide
- Calcul des pas gratuit - Télécharger - Sport
- Excel champ calculé avec condition ✓ - Forum Excel
- Formule qui calcule le total et se met à jour si on change une valeur du tableau. ✓ - Forum Excel
- Calcule grossesse - Télécharger - Vie quotidienne
8 réponses
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.
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?
Voilà j'ai test avec ce nouveau code :
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 ?
#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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 )
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 )
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
le passage par z ne devait servir qu'a te montrer que ta fomule était fausse
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
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
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;
}
#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;
}