public class JourSuivant { ///////////////////////////////////////////// /* Type agrege de stockage d'une date */ /* formee d'un numero de jour, d'un numero */ /* de mois et d'un numero d'annee */ static class Date { int jour = 1; int mois = 1; int annee = 1901; }; /* Calcul du jour suivant une date codee */ /* sous la forme jour mois annee en entier */ static Date jourSuivant(Date d) { Date res = new Date(); res.jour = d.jour+1; res.mois = d.mois; res.annee = d.annee; if ( res.jour > nombreJoursMois(d.mois,d.annee) ) { res.jour = 1; res.mois = res.mois+1; if ( res.mois > 12 ) { res.mois = 1; res.annee = res.annee+1; } } return res; } ///////////////////////////////////////////// /* Test si une annee est bissextile */ static boolean testBissextile(int annee) { boolean res; if ( annee%400 == 0 ) { res = true; } else { if ( annee%100 == 0 ) { res = false; } else { if ( annee%4 == 0 ) { res = true; } else { res = false; } } } return res; } /* Calcul du nombre de jours d'un mois */ static int nombreJoursMois(int mois,int annee) { int res; switch (mois) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : { res = 31; } break; case 4 : case 6 : case 9 : case 11 : { res = 30; } break; case 2 : { if ( testBissextile(annee) == true ) { res = 29; } else { res = 28; } } break; default : { res = -1; } break; } return res; } /* Lecture au clavier et retour d'une date */ static Date LectureDate() { Date d = new Date(); Ecran.afficher("SVP, l'annee : "); d.annee = Clavier.saisirInt(); Ecran.afficher("SVP, le mois : "); d.mois = Clavier.saisirInt(); Ecran.afficher("SVP, le jour : "); d.jour = Clavier.saisirInt(); return(d); } /* Formatage et retour d'une date */ /* en une chaine de caracteres */ static String format(Date d) { String s = ""; s = d.jour+"/"+d.mois+"/"+d.annee; return(s); } /* Programme principal */ public static void main(String [] args) { Date dt; Date resultat; dt = LectureDate(); resultat = jourSuivant(dt); Ecran.afficherln(format(resultat)); } }