// on a modifie le constructeur pour indiquer si l'on veut optimiser un covoiturage ou effectuer // une simple recherche de PCC public Pcc(Graphe gr, PrintStream sortie, Readarg readarg, int covoit) { super(gr, sortie, readarg); // integer lie au covoiturage : 0 = pas de covoiturage, 1=pieton, 2=voiture this.setcovoit(covoit); if (covoit == 0) { // ALGORITHME CLASSIQUE DE PCC this.zoneOrigine = gr.getZone(); while ((this.origine = readarg.lireInt("Numero du sommet d'origine ? ")) >= this.graphe.sommets.size()) { // le sommet n'appartient pas au graphe ! System.out.println("Sommet inexistant ! Retapez un numéro de sommet."); } // Demander la zone et le sommet destination. this.zoneDestination = gr.getZone(); while ((this.destination = readarg.lireInt("Numero du sommet destination ? ")) >= this.graphe.sommets.size()) { // le sommet n'appartient pas au graphe ! System.out.println("Sommet inexistant ! Retapez un numéro de sommet."); } } else { // ALGORITHME DE COVOITURAGE // Seul le sommet d'origine nous interesse car on calcule les plus courts chemins vers tous // les autres. // on instancie arbitrarement le sommet de destination sur celui d'origine, puisque dans tout // les cas // on a ajoute une condition dans l'algorithme qui le force a calculer le PCC vers tous les // autres sommets, sans s'arreter a la destination. this.zoneOrigine = gr.getZone(); while ((this.origine = readarg.lireInt("Numero du sommet? ")) >= this.graphe.sommets.size()) { // le sommet n'appartient pas au graphe System.out.println("Sommet inexistant ! Retapez un numéro de sommet."); } this.zoneDestination = gr.getZone(); this.destination = this.origine; } }