Advertisement
algoritmy0599

Tour AG

May 26th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement