Salut j'ai créer un petit programme à l'aide du tuto de M@téo et je voulais savoir ce que vous en pensiez.
Ce petit programme permet de vous indiquer quel jour de la semaine vous êtes né en vous posant 3-4 questions!
Ca peut etre sympa comme programme (moi je suis né un samedi)
Par contre ca serait encore plus sympa de poster le code source car j'avoue que y a certaine questions que je pigent pas trop (Tapez le nombre qui suit la virgule)
Bon et puis quelques system("CLS"); seraient pas de trop
Je trouve que tu aurais pu faire plus automatisé. Par exemple pour les mois au lieu de forcer le lecteur a chercher dans la liste, tu aurais pu juste demander le mois de naissance ( comme 5 pour mai, 9 pour septembre... ). Pour les années bissextiles, ce sont des années divisibles par 4, tu aurais pu utiliser la valeur des années et faire un modulo en 4 par exemple...
Je me rappelle avoir fait un proggramme plus automatisé sur calculatrice, alors il n'y a pas de raison qu'il n'en soit pas de même en C !
Non non je suis là! (Je jouais à UT2004 )
Bon voilà le code et aussi une explication!
Cest vrai que la dernière question peut paraitre bizarre mais c'est comme ça que ça marche!
C'est des calculs que j'avais appris à l'école et qui permettent de trouver le jour de la naissance!
Bon je vais essayer de trouver un truc plus simple pour la dernière question, Va falloir réfléchir comment je peux faire ça!
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { long date = 0, resultat1 = 0, mois = 0, jour = 0, semaine = 0 ; double resultat2= 0, resultat3= 0; printf("=== Jour De Votre Naissance ===\n\n"); printf("=== Par The_Greek22 ===\n\n"); printf("Veuillez tapez le dernier chiffre de votre date de naissance.\n"); printf("Par exemple, si vous etes ne en 1989, tapez : 89. \n");
scanf("%ld", &date);
resultat1 = date / 4;
printf("\n\n******************************************************************\n\n"); printf("\nLe Tableau des Mois:\n\n"); printf("Janvier : 1 \n"); printf("Janvier (annee bissextile) : 0 \n"); printf("Fevrier : 4 \n"); printf("Fevrier (annee bissextile) : 3 \n"); printf("Mars : 4 \n"); printf("Avril : 0 \n"); printf("Mai : 2 \n"); printf("Juin : 5 \n"); printf("Juillet : 0 \n"); printf("Aout : 3 \n"); printf("Septembre : 6 \n"); printf("Octobre : 1 \n"); printf("Novemnbre : 4 \n"); printf("Decembre : 6 \n\n\n"); printf("Inscrivez le chiffre qui correspond a votre mois de naissance par rapport au tableau ci-dessus: \n");
scanf("%ld", &mois); printf("\n\n******************************************************************\n\n"); printf("\n\nInscrivez le jour de votre naissance (Par exemple, si vous etes ne le 22 decembre, tapez : 22)\n");
scanf("%ld", &jour); printf("\n\n******************************************************************\n\n");
resultat2 = date + resultat1 + mois + jour;
resultat3 = resultat2 / 7;
printf("\n\nMaintenant, inscrivez le premier chiffre qui se trouve a la droite de la virgule du nombre %lf.(ex: pour 116.79567, inscrivez 7): ", resultat3);
scanf("%ld", &semaine); printf("\n\n******************************************************************\n\n");
switch(semaine) { case0: printf("\nVous etes ne un Samedi !\n"); break; case1: printf("\nVous etes ne un Dimanche !\n"); break; case2: printf("\nVous etes ne un Lundi !\n"); break; case4: printf("\nVous etes ne un Mardi !\n"); break; case5: printf("\nVous etes ne un Mercredi !\n"); break; case7: printf("\nVous etes ne un Jeudi !\n"); break; case8: printf("\nVous etes ne un Vendredi !\n"); break;
Nickel merci, bon je vais essayer de l'améliorer, puis je te repasse le code
(Je pense pas faire d'énorme progrès)
Bon en tout cas merci, je m'emmerdais un peu sur mon pc la, j'ai de quoi m'occuper
Ok!
Je pense que là où tu peux "travailler" c'est à la fin, de trouver une opération qui indiuqe la première décimale!
Merci à tous!
EDIT: Voilà j'ai trouvé que pour trouver le nombre décimal il fallai faire comme ça.
exemple avec 116,5675345
116,5675345-116 = 0.5675345
0.5675345 * 10 = 5 (résultat du type long, don on oublie les décimales!)
Bon rien de sorcier lol .
Mais maintenant pour faire ça en C c'est plus dur!
Car il faudrait que quand on inscrit les nombres qu'on est 2 variables resultat une long et une double pour avoir une fois le chiffre avec décimal et puis le soustraire avec le résultat long:
116,5675345 (double)-116(long)
Mais le résultat doit être de type double!
0.5675345
Puis le résultat multiplié par 10 doit être de type long pour afficher le nombre entier: 5 et non pas 5.675345.
Ca c'est un peu plus sorcier.
Mais comemnt faire avec un scanf de façon à obtenir deux variables : une double et une longue?
Lol, bon voilà le problème!
EDIT 2:
Je me suis compliqué la vie
Voilà j'ai essayer de le faire mais ça ne marche pas! Pourquoi?
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { long date = 0, resultat1 = 0, mois = 0, jour = 0, semaine = 0, resultat4 = 0 ; double resultat2= 0, resultat3= 0, resultat5 = 0; printf("=== Jour De Votre Naissance ===\n\n"); printf("=== Par The_Greek22 ===\n\n"); printf("Veuillez tapez le dernier chiffre de votre date de naissance.\n"); printf("Par exemple, si vous etes ne en 1989, tapez : 89. \n");
scanf("%ld", &date);
resultat1 = date / 4;
printf("\n\n******************************************************************\n\n"); printf("\nLe Tableau des Mois:\n\n"); printf("Janvier : 1 \n"); printf("Janvier (annee bissextile) : 0 \n"); printf("Fevrier : 4 \n"); printf("Fevrier (annee bissextile) : 3 \n"); printf("Mars : 4 \n"); printf("Avril : 0 \n"); printf("Mai : 2 \n"); printf("Juin : 5 \n"); printf("Juillet : 0 \n"); printf("Aout : 3 \n"); printf("Septembre : 6 \n"); printf("Octobre : 1 \n"); printf("Novemnbre : 4 \n"); printf("Decembre : 6 \n\n\n"); printf("Inscrivez le chiffre qui correspond a votre mois de naissance par rapport au tableau ci-dessus: \n");
scanf("%ld", &mois); printf("\n\n******************************************************************\n\n"); printf("\n\nInscrivez le jour de votre naissance (Par exemple, si vous etes ne le 22 decembre, tapez : 22)\n");
scanf("%ld", &jour); printf("\n\n******************************************************************\n\n");
//Trouver le jour
resultat2 = date + resultat1 + mois + jour;//j'additionne les résultats pour trouver le nombre avec les décimales
resultat3 = resultat2 / 7;//là c'est la fin de l'opération décimale
resultat4 = date + resultat1 + mois + jour;//je cherche le résultat mais en entier
resultat5 = resultat3 - resultat4; // je soustrais les 2 résultats pour n'avoir que les décimales
semaine = resultat5 * 10;//j'ai le numéro du jour qui est du type long, donc sans les décimales!
switch(semaine) { case0: printf("\nVous etes ne un Samedi !\n"); break; case1: printf("\nVous etes ne un Dimanche !\n"); break; case2: printf("\nVous etes ne un Lundi !\n"); break; case4: printf("\nVous etes ne un Mardi !\n"); break; case5: printf("\nVous etes ne un Mercredi !\n"); break; case7: printf("\nVous etes ne un Jeudi !\n"); break; case8: printf("\nVous etes ne un Vendredi !\n"); break;
Ah ouais pas con, bon je vais essayer de retranscrire en C, meme si ça a l'air un peu dur pour mon niveau de débutant..
Enfin, quand on veut, on peut !!
J'ai rééedité le code avec des commentaires pour mieux comprendre .
Car moi je ne vois pas pourquoi ça ne marche pas!
EDIT: CA MARCHE!!
J'ai réussi!!
J'avais oublié de mettre une opération!
voici la correction finale!
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { long date = 0, resultat1 = 0, mois = 0, jour = 0, semaine = 0, resultat4 = 0, resultat6 = 0; double resultat2= 0, resultat3= 0, resultat5 = 0 ; printf("=== Jour De Votre Naissance ===\n\n"); printf("=== Par The_Greek22 ===\n\n"); printf("Veuillez tapez le dernier chiffre de votre date de naissance.\n"); printf("Par exemple, si vous etes ne en 1989, tapez : 89. \n");
scanf("%ld", &date);
resultat1 = date / 4;
printf("\n\n******************************************************************\n\n"); printf("\nLe Tableau des Mois:\n\n"); printf("Janvier : 1 \n"); printf("Janvier (annee bissextile) : 0 \n"); printf("Fevrier : 4 \n"); printf("Fevrier (annee bissextile) : 3 \n"); printf("Mars : 4 \n"); printf("Avril : 0 \n"); printf("Mai : 2 \n"); printf("Juin : 5 \n"); printf("Juillet : 0 \n"); printf("Aout : 3 \n"); printf("Septembre : 6 \n"); printf("Octobre : 1 \n"); printf("Novemnbre : 4 \n"); printf("Decembre : 6 \n\n\n"); printf("Inscrivez le chiffre qui correspond a votre mois de naissance par rapport au tableau ci-dessus: \n");
scanf("%ld", &mois); printf("\n\n******************************************************************\n\n"); printf("\n\nInscrivez le jour de votre naissance (Par exemple, si vous etes ne le 22 decembre, tapez : 22)\n");
scanf("%ld", &jour); printf("\n\n******************************************************************\n\n");
//Trouver le jour
resultat2 = date + resultat1 + mois + jour;//j'additionne les résultats pour trouver le nombre avec les décimales
resultat3 = resultat2 / 7;//là c'est la fin de l'opération décimale
resultat4 = date + resultat1 + mois + jour;//je cherche le résultat mais en entier
resultat6 = resultat4 / 7;
resultat5 = resultat3 - resultat6; // je soustrais les 2 résultats pour n'avoir que les décimales
semaine = resultat5 * 10;//j'ai le numéro du jour qui est du type long, donc sans les décimales!
switch(semaine) { case0: printf("\nVous etes ne un Samedi !\n"); break; case1: printf("\nVous etes ne un Dimanche !\n"); break; case2: printf("\nVous etes ne un Lundi !\n"); break; case4: printf("\nVous etes ne un Mardi !\n"); break; case5: printf("\nVous etes ne un Mercredi !\n"); break; case7: printf("\nVous etes ne un Jeudi !\n"); break; case8: printf("\nVous etes ne un Vendredi !\n"); break;
Rofl, ben j'ai plus rien a faire moi :'(, ben en tout cas bravo, maintenant faut essayer d'améliorer l'affichage graphique (ca reste de la console), je m'en occupe !!
Arf!
Désolé .
Mais j'éais tellement content! C'est mon premier programme!
Bin sinon je sais pas comment améliorer les graphique...
Donc je risque pas de trouver avant toi .
Bon voila, c'est aps super, mais en regardant bien, ca allait deja pas mal, si tu veux rester en noir et blanc enlève le "system("color f1");" au début :
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) {
system("color f1"); long date = 0, resultat1 = 0, mois = 0, jour = 0, semaine = 0, resultat4 = 0, resultat6 = 0; double resultat2= 0, resultat3= 0, resultat5 = 0 ;
printf("=== Jour De Votre Naissance ===\n\n"); printf("=== Par The_Greek22 ===\n\n"); printf("Veuillez tapez le dernier chiffre de votre date de naissance.\n"); printf("Par exemple, si vous etes ne en 1989, tapez : 89. \n\n");
scanf("%ld", &date);
resultat1 = date / 4;
system("CLS");
printf("\n\nMaintenant veuillez tapez le numero qui correspond a votre mois \n\n");
printf("Avril, Juillet et Janvier(bissextile) = 0 \n"); printf("Janvier et Octobre = 1 \n"); printf("Mai = 2 \n"); printf("Aout et Fevrier(bissextile) = 3 \n"); printf("Fevrier, Mars et Novembre = 4 \n"); printf("Juin = 5 \n"); printf("Septembre et Decembre = 6 \n"); printf("Inscrivez le chiffre qui correspond a votre mois de naissance: \n");
scanf("%ld", &mois);
system("CLS");
printf("\n\nInscrivez le jour de votre naissance (Si vous etes nee un 5, tapez 5) : \n");
scanf("%ld", &jour);
system("CLS");
//Trouver le jour
resultat2 = date + resultat1 + mois + jour;//j'additionne les résultats pour trouver le nombre avec les décimales
resultat3 = resultat2 / 7;//là c'est la fin de l'opération décimale
resultat4 = date + resultat1 + mois + jour;//je cherche le résultat mais en entier
resultat6 = resultat4 / 7;
resultat5 = resultat3 - resultat6; // je soustrais les 2 résultats pour n'avoir que les décimales
semaine = resultat5 * 10;//j'ai le numéro du jour qui est du type long, donc sans les décimales!
switch(semaine) { case0: printf("\nVous etes ne un Samedi !\n"); break; case1: printf("\nVous etes ne un Dimanche !\n"); break; case2: printf("\nVous etes ne un Lundi !\n"); break; case4: printf("\nVous etes ne un Mardi !\n"); break; case5: printf("\nVous etes ne un Mercredi !\n"); break; case7: printf("\nVous etes ne un Jeudi !\n"); break; case8: printf("\nVous etes ne un Vendredi !\n"); break;
Sinon, y'a 2 comandes que je ne connaissaient pas (car elles ne sont pas sans les tutos de Matéo, pour l'instant ).
system("CLS");
et
system("color f1");
Alors si j'ai bien compris, system("CLS"); te permet de faire une "nouvelle page". Donc de ne pas avoir tout à la suite!
Et system("color f1"); te permet d'avoir le fond blanc et l'écriture bleu!
Donc si je change le "f1" en "f2" ou autre, j'ai un autre style?
Sinon c'est les seuls nouvelles commandes?
Sinon c'est bien, mais je trouve que là où il y a le tableau des mois que c'est plus simple de faire par moi!
C'est plus compréhensible et plus facile à s'y retrouver!
Ouais t'as tout compris system("CLS"); ca t'efface l'écran et system("color f1") ca te change le style de la console, tu peux tester tout les nombres..
Sinon pour le tableau j'ai essayé de l'organiser en ordre croissant, mais c'est vrai que c'est aps trop compréhensible, moi ce qui m'mebete c'est le (année bissextile) ca prend trop de place...
Et puis bon j'ai rien fait d'exceptionnel, tu t'es tapé 90% du code (9 autres % c'est dev-c++ qui les a écrit )
A+
Lol!
Ok non mais c'est cool alors j'ai juste changer le tableau des mois et corriger une petite faute d'orthographe ^^.
En plus les couleurs sont parafaites, car je suis en train de faire un site "Greek Code" et les couleurs sont bleu et blanches (couleurs de la Grèce!)
Et en parlat de site, je trouve le tiens très bien!
Et j'aime bien l'animation en bas de la page d'accueil ^^.
voici une fonction qui te permet de vérifier si une année est bissextile ou pas. Elle renvoye 1 si l'annee est bissextile et 0 si l'annee est une année de 365. Elle prend comme paramètre l'année (1987 et pas 87)
Merci beaucoup!
Ca peut me servir car je voulais faire le programme un peu plus "court".
Donc il demande en une fois le jour/mois/date et le programme répond !
Eu san vouloir tou casser ton code marche pas a chaque fois car j'ai dit que j'était né le 23 septembre 2005 et il ma di que c'était un samedi alors que c'etait un vendredi
Oui effectivement tu as raison.
Car quand tu inscris 05 (pour le 2005).
C'est come si tu demandais en 1905!
Alors on peut dire le seul défaut de ce programme ou plutotdu calcul mathématique est qu'il faut être né au XXe siècle!
Mais merci pour la remarque!
EDIT: Si qqun doute de mon programme, vérifiez ici : ICI
Le problème du XXème siècle ne provient pas du programme mais du calcule mathématique!
Avec ce calcul tu ne peux que trouver les jours de la semaine du XXème siècle!
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)