public class DateTestAnteriorite { /* 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; }; /* Lecture au clavier et retour d'une date */ static Date saisirDate() { Date d = new Date(); Ecran.afficher("Jour ? "); d.jour = Clavier.saisirInt(); Ecran.afficher("Mois ? "); d.mois = Clavier.saisirInt(); Ecran.afficher("Annee ? "); d.annee = Clavier.saisirInt(); return d; } /* Affichage d'une date au format jj/mm/aaaa */ static void afficher(Date d) { if ( d.jour < 10 ) { Ecran.afficher("0"); } Ecran.afficher(d.jour); Ecran.afficher("/"); if ( d.mois < 10 ) { Ecran.afficher("0"); } Ecran.afficher(d.mois); Ecran.afficher("/"); if ( d.annee < 10 ) { Ecran.afficher("0"); } if ( d.annee < 100 ) { Ecran.afficher("0"); } if ( d.annee < 1000 ) { Ecran.afficher("0"); } Ecran.afficher(d.annee); } ///////////////////////////////////////////////// /* Test de l'egalite de deux Date */ static boolean testAnteriorite(Date d1,Date d2) { boolean res; if ( d1.annee < d2.annee ) { res = true; } else { if ( d1.annee > d2.annee ) { res = false; } else { if ( d1.mois < d2.mois ) { res = true; } else { if ( d1.mois > d2.mois ) { res = false; } else { if ( d1.jour < d2.jour ) { res = true; } else { res = false; } } } } } return res; } ///////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { Date d1; Date d2; boolean anteriorite; Ecran.afficherln("SVP, premiere date"); d1 = saisirDate(); Ecran.afficherln("SVP, deuxieme date"); d2 = saisirDate(); anteriorite = testAnteriorite(d1,d2); if ( anteriorite ) { afficher(d1); Ecran.afficher(" est anterieure a "); afficher(d2); } else { afficher(d1); Ecran.afficher(" est posterieure ou egale a "); afficher(d2); } Ecran.afficherln(); } }