Exemple #1
0
  // 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;
    }
  }