Programme jour de naissance
Fkugs
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Rangoral -
Rangoral -
Bonjour,
J'ai fait un programme en algoscript (simplification de javascript pour les étudiants) qui a pour but de donner la jour de la semaine de naissance à l'utilisateur. Le programme fonctionne sauf qu'au fur et à mesure que l'année de naissance s'éloigne, les jours se décalent et donc ne donnent pas le bon résultat. Pour l'année 2013 cela marche mais dès 2012 il devient imprécis. Je vous link le code :
var mois, annee, jour;
jour=SaisieEntier("Votre jour de naissance ?");
mois=SaisieEntier("Votre mois de naissance ?");
annee=SaisieEntier("Votre année de naissance ?");
function JourDeLaSemaine(a,q,n,s,r,mois,bissextile,annee,jour,resultat){
var a;
var q;
var n;
var s;
var r;
var mois;
var bissextile;
var annee;
var jour;
var resultat;
a=(annee-1901);
q=(a%4);
if (annee%4==0 && (annee%100!=0 || annee%400==0)){
bissextile=true
}else{
bissextile=false
}
if (mois == 1){
n = 0
}
if (mois == 2){
n = 31
}
if (bissextile == false && mois == 4){
n = 31+28+31
}
if (bissextile == false && mois == 5) {
n = 30+31+28+31
}
if (bissextile == false && mois == 6) {
n = 31+30+31+28+31
}
if (bissextile == false && mois == 7) {
n = 30+31+30+31+28+31
}
if (bissextile == false && mois == 8){
n = 31+30+31+30+31+28+31
}
if (bissextile == false && mois == 9) {
n = 31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 10){
n = 30+31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 11) {
n = 31+30+31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 12) {
n = 30+31+30+31+31+30+31+30+31+28+31
}
if (bissextile == true && mois == 3) {
n = 29+31
}
if (bissextile == true && mois == 4){
n = 31+29+31
}
if (bissextile == true && mois == 5) {
n = 30+31+29+31
}
if (bissextile == true && mois == 6) {
n = 31+30+31+29+31
}
if (bissextile == true && mois == 7){
n = 30+31+30+31+29+31
}
if (bissextile == true && mois == 8) {
n = 31+30+31+30+31+29+31
}
if (bissextile == true && mois == 9){
n = 31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 10){
n = 30+31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 11){
n = 31+30+31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 12){
n = 30+31+30+31+31+30+31+30+31+29+31
}
s=a+q+n+jour+1;
r=s%7;
if (r==1){
resultat="lundi"
}
if (r==2){
resultat="mardi"
}
if(r==3){
resultat="mercredi"
}
if (r==4){
resultat="jeudi"
}
if(r==5){
resultat="vendredi"
}
if(r==6){
resultat="samedi"
}
if(r==7){
resultat="dimanche"
}
return r;
Ecrire(JourDeLaSemaine(a,q,n,s,r,mois,bissextile,annee,jour,resultat))
Merci d'avance de vos réponses.
J'ai fait un programme en algoscript (simplification de javascript pour les étudiants) qui a pour but de donner la jour de la semaine de naissance à l'utilisateur. Le programme fonctionne sauf qu'au fur et à mesure que l'année de naissance s'éloigne, les jours se décalent et donc ne donnent pas le bon résultat. Pour l'année 2013 cela marche mais dès 2012 il devient imprécis. Je vous link le code :
var mois, annee, jour;
jour=SaisieEntier("Votre jour de naissance ?");
mois=SaisieEntier("Votre mois de naissance ?");
annee=SaisieEntier("Votre année de naissance ?");
function JourDeLaSemaine(a,q,n,s,r,mois,bissextile,annee,jour,resultat){
var a;
var q;
var n;
var s;
var r;
var mois;
var bissextile;
var annee;
var jour;
var resultat;
a=(annee-1901);
q=(a%4);
if (annee%4==0 && (annee%100!=0 || annee%400==0)){
bissextile=true
}else{
bissextile=false
}
if (mois == 1){
n = 0
}
if (mois == 2){
n = 31
}
if (bissextile == false && mois == 4){
n = 31+28+31
}
if (bissextile == false && mois == 5) {
n = 30+31+28+31
}
if (bissextile == false && mois == 6) {
n = 31+30+31+28+31
}
if (bissextile == false && mois == 7) {
n = 30+31+30+31+28+31
}
if (bissextile == false && mois == 8){
n = 31+30+31+30+31+28+31
}
if (bissextile == false && mois == 9) {
n = 31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 10){
n = 30+31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 11) {
n = 31+30+31+31+30+31+30+31+28+31
}
if (bissextile == false && mois == 12) {
n = 30+31+30+31+31+30+31+30+31+28+31
}
if (bissextile == true && mois == 3) {
n = 29+31
}
if (bissextile == true && mois == 4){
n = 31+29+31
}
if (bissextile == true && mois == 5) {
n = 30+31+29+31
}
if (bissextile == true && mois == 6) {
n = 31+30+31+29+31
}
if (bissextile == true && mois == 7){
n = 30+31+30+31+29+31
}
if (bissextile == true && mois == 8) {
n = 31+30+31+30+31+29+31
}
if (bissextile == true && mois == 9){
n = 31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 10){
n = 30+31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 11){
n = 31+30+31+31+30+31+30+31+29+31
}
if (bissextile == true && mois == 12){
n = 30+31+30+31+31+30+31+30+31+29+31
}
s=a+q+n+jour+1;
r=s%7;
if (r==1){
resultat="lundi"
}
if (r==2){
resultat="mardi"
}
if(r==3){
resultat="mercredi"
}
if (r==4){
resultat="jeudi"
}
if(r==5){
resultat="vendredi"
}
if(r==6){
resultat="samedi"
}
if(r==7){
resultat="dimanche"
}
return r;
Ecrire(JourDeLaSemaine(a,q,n,s,r,mois,bissextile,annee,jour,resultat))
Merci d'avance de vos réponses.
A voir également:
- Programme jour de naissance
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Programme demarrage windows - Guide
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
1 réponse
Salut,
" Le programme fonctionne sauf " Donc il ne fonctionnes pas.
Le calendrier que nous utilisons est faux, d'où la nécessité de rectification régulières.
Je vous conseille de vous baser sur le temps en secondes Unix:
http://www.unixtimestamp.com/index.php
Qui vous permettra de simplifier les calculs et d'avoir des résultats justes(un nombre de secondes est un nombre de secondes, les années elles ne font pas exactement 365 jours), rectifiez ensuite après en prenant en compte le décalage moyen du calendrier.
En tout cas votre algorithme ne pourra ps fonctionner:
if (bissextile == true && mois == 5) {
n = 30+31+29+31
} puisque il s'appuie sur des séquences logiques et non des valeurs mathématiques, le cycle de la terre autour du soleil étant mathématique c'est cette correction (celle du calendrier)qu'il faut prendre en compte et non le calcul arbitraire des années bisextiles qui est par définition faux.
" Le programme fonctionne sauf " Donc il ne fonctionnes pas.
Le calendrier que nous utilisons est faux, d'où la nécessité de rectification régulières.
Je vous conseille de vous baser sur le temps en secondes Unix:
http://www.unixtimestamp.com/index.php
Qui vous permettra de simplifier les calculs et d'avoir des résultats justes(un nombre de secondes est un nombre de secondes, les années elles ne font pas exactement 365 jours), rectifiez ensuite après en prenant en compte le décalage moyen du calendrier.
En tout cas votre algorithme ne pourra ps fonctionner:
if (bissextile == true && mois == 5) {
n = 30+31+29+31
} puisque il s'appuie sur des séquences logiques et non des valeurs mathématiques, le cycle de la terre autour du soleil étant mathématique c'est cette correction (celle du calendrier)qu'il faut prendre en compte et non le calcul arbitraire des années bisextiles qui est par définition faux.