SHARE
TWEET

Tour AG

algoritmy0599 May 26th, 2019 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class Golftournament {
  2.  
  3.     private final int[] parsPerHole;    // pole s hodnotami paru
  4.     private Golfplayer[] players;       // pole hracu
  5.  
  6.     //konstruktor
  7.     public Golftournament(int[] parsPerHole, String[] names) {
  8.         if (parsPerHole == null || parsPerHole.length < 1)
  9.             throw new IllegalArgumentException("Pole pars nemůže být prázdné.");
  10.  
  11.         if (names == null || names.length < 1)
  12.             throw new IllegalArgumentException("Pole jmen nemůže být prázdné.");
  13.  
  14.         this.parsPerHole = parsPerHole;
  15.         this.players = new Golfplayer[names.length];
  16.  
  17.         // pole naplnime hraci
  18.         for (int i = 0; i < this.players.length; i++) {
  19.             this.players[i] = new Golfplayer(names[i], parsPerHole.length);
  20.             // jmeno vezmeme ze vstupniho pole, pocet jamek je dan polem s pary
  21.         }
  22.     }
  23.  
  24.    //metoda, kde se generují šechny výsledky
  25.  
  26.     public void generateResults() {
  27.         Random rand = new Random();
  28.         int strokesPerHole;
  29.  
  30.         // cyklus prochazejici vsechny jamky (jeden pruchod = jedno odehrane kolo)
  31.  
  32.         for (int i = 0; i < this.parsPerHole.length; i++) {
  33.  
  34.             // cyklus prochazejici vsechny hrace
  35.  
  36.             for (int j = 0; j < this.players.length; j++) {
  37.  
  38.                 // kazdemu hraci potrebujeme vygenerovat pocet ran na dane jamce
  39.                 // tento pocet musi byt z rozsahu [1; par+2]
  40.                 strokesPerHole = rand.nextInt(this.parsPerHole[i] + 2) + 1;
  41.                 this.players[j].setStrokesPerHole(i, strokesPerHole);
  42.             }
  43.  
  44.             // po kazde odehrane jamce hrace seradime a vytiskneme
  45.  
  46.             this.sort();
  47.  
  48.             // po serazeni pole jej muzeme vytisknout
  49.             // po posledni odehrane jamce potrebujeme specialni hlavicku
  50.  
  51.             if (i < this.parsPerHole.length - 1) {
  52.                 System.out.println("Průběžné pořadí po " + (i+1) + ". odehrané jamce");
  53.                 System.out.println(" ");
  54.             }
  55.             else {
  56.                 System.out.println("Konečné pořadí turnaje");
  57.                 System.out.println(" ");
  58.             }
  59.  
  60.             this.print();
  61.             System.out.println();       // prazdny radek
  62.         }
  63.     }
  64.  
  65.     // bubble sort, kde postupně zkracujeme délku pole
  66.  
  67.     public void sort() {
  68.         boolean change = true;
  69.         int maxIndex = this.players.length - 1;
  70.         Golfplayer pom;
  71.  
  72.         while (change) {
  73.             change = false;
  74.  
  75.             for (int i = 0; i < maxIndex; i++) {
  76.                 if (this.players[i].getTotalStrokes() > this.players[i+1].getTotalStrokes()) {
  77.  
  78.                     // budeme provadet zamenu golfistu
  79.                     pom = this.players[i];
  80.                     this.players[i] = this.players[i+1];
  81.                     this.players[i+1] = pom;
  82.  
  83.                     change = true;
  84.                 }
  85.             }
  86.             maxIndex--;
  87.         }
  88.     }
  89. // formatovaný vypis golfistů
  90.  
  91.     public void print() {
  92.         if (this.players == null) {
  93.             System.out.println("Startovní pole golfistů je prázdné.");
  94.         }
  95.         else {
  96.             String text = String.format("%-6s %-25s %-10s", "Poř.", "Jméno", "Skóre");
  97.             System.out.println(text + "\n--------------------------------------");
  98.  
  99.             for (int i = 0; i < this.players.length; i++) {
  100.                 text = String.format("%-6s %-25s %-10d", (i+1) + ".", this.players[i].getName(), this.players[i].getTotalStrokes());
  101.                 System.out.println(text);
  102.             }
  103.         }
  104.     }
  105.  
  106. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top