Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wynik / statystyki
Forum PHP.pl > Forum > Przedszkole
miras
Witam, problem czysto teoretyczny, bo nie wiem jak się za to zabrać od strony kodu.

Są 4 drużyny - A, B, C i D


Drużyna A pokonała wszystkie pozostałe drużyny, więc zajmuje pierwsze miejsce.

Drużyna B przegrała z drużyną D.

Drużyna B wygrała z drużyną C.

Drużyna C wygrała z drużyną D.


Końcowe statystyki powinny być takie:

1. A
2. B
3. C
4. D


ma ktoś pomysł na jakiś algorytm czy coś? dodam jeszcze, że mam w bazie wyniki wszystkich tych meczy (dokładne punkty) - jeżeli to coś pomoże.

johny_s
Równie dobrze możesz użyć randoma, jeśli nie wprowadzisz dodatkowych warunków. Dodaj jakiś stosunek bramek (punktów, czy cokolwiek tam masz).
miras
1. Klasyfikację drużyn ustala się na podstawie punktów, zgodnie z zapisem zwycięstw i porażek, a
mianowicie dwa (2) punkty za każdy wygrany mecz, jeden (1) punkt za każdy przegrany mecz
(włącznie z przegranymi wskutek braku zawodników) i zero (0) punktów za mecz przegrany
walkowerem.
2. Niniejsza procedura ma zastosowanie w sytuacji, gdy drużyna rozegrała tylko jeden (1) mecz
przeciwko każdej innej drużynie w grupie (pojedynczy turniej), jak również, gdy drużyna rozegrała
dwa (2) lub więcej meczów przeciwko każdej innej drużynie w lidze lub grupie (rozgrywki ligowe
systemem mecz i rewanż lub kilka turniejów).
3. Jeżeli dwie (2) lub więcej drużyn ma równą liczbę punktów po rozegraniu wszystkich meczów w
danej grupie, to o kolejności miejsc decyduje(-ą) wynik(-i) meczu(-ów) pomiędzy tymi drużynami.
Jeżeli liczba punktów w meczach pomiędzy tymi drużynami wciąż jest taka sama, klasyfikację
ustala się według poniższych zasad, w następującej kolejności:
- Decyduje większa różnica koszy zdobytych do straconych w meczach pomiędzy tymi drużynami.
- Decyduje większa liczba koszy zdobytych w meczach pomiędzy tymi drużynami.
- Decyduje większa różnica koszy zdobytych do straconych we wszystkich meczach w danej
grupie.
- Decyduje większa liczba koszy zdobytych we wszystkich meczach w danej grupie.
Jeżeli powyższe zasady w dalszym ciągu nie dają rozstrzygnięcia, klasyfikację ustala się w drodze
losowania.
4. Jeżeli jedna (1) lub więcej drużyn zostaje sklasyfikowanych na którymkolwiek etapie zasad
podanych powyżej, to procedury z art. D.1.3 stosuje się ponownie w stosunku do pozostałych
niesklasyfikowanych drużyn
johny_s
No to masz wszystkie wytyczne, teraz trzeba to tylko wklepać smile.gif
miras
W takim razie zapodaje kod, który napisałem, ale nie działa do końca poprawnie, może ktoś z Was mnie nakieruje, bo niedługo osiwieje ;>

  1.  
  2. public function clubs() {
  3. $query = $this->mysqli->prepare("SELECT meczid, klubid, punkty, zdobyte, stracone, w, p, kolejkaid FROM tabele");
  4. $query->bind_result($meczid, $klubid, $punkty, $zdobyte, $stracone, $w, $p, $kolejkaid);
  5. $query->execute();
  6. $query->store_result();
  7. $count = $query->num_rows;
  8.  
  9. if($count == 0)
  10. {
  11. $query->close();
  12.  
  13. return false;
  14. }
  15. else
  16. {
  17.  
  18.  
  19. while($query->fetch())
  20. {
  21. $data[$klubid]['rozegrane'] = $data[$klubid]['rozegrane']+1;
  22. $data[$klubid]['zwyciestwa'] = $data[$klubid]['zwyciestwa']+$w;
  23. $data[$klubid]['porazki'] = $data[$klubid]['porazki']+$p;
  24. $data[$klubid]['punkty'] = $data[$klubid]['punkty']+$punkty;
  25. $data[$klubid]['zdobyte'] = $data[$klubid]['zdobyte']+$zdobyte;
  26. $data[$klubid]['stracone'] = $data[$klubid]['stracone']+$stracone;
  27. $data[$klubid]['kid'] = $klubid;
  28.  
  29.  
  30.  
  31. }
  32.  
  33.  
  34.  
  35.  
  36. function compare($a, $b)
  37. {
  38. if($a['punkty'] == $b['punkty']) {
  39. $z = new Basket;
  40. $tab = $z->get_winner($a['kid'], $b['kid']);
  41. return ($tab[0] < $tab[1]) ? 1 : -1;
  42. } else {
  43. return ($a['punkty'] < $b['punkty']) ? 1 : -1;
  44. }
  45. }
  46.  
  47.  
  48.  
  49. usort($data, 'compare');
  50.  
  51.  
  52.  
  53. $query->close();
  54.  
  55. return $data;
  56. }
  57. }
  58.  
  59.  
  60.  
  61.  
  62.  
  63. public function get_winner($a, $b) {
  64. $query = $this->mysqli->prepare("SELECT id, meczid, klubid, punkty, zdobyte, stracone, w, p FROM tabele WHERE klubid = ?");
  65. $query->bind_param("i", $a);
  66. $query->bind_result($id, $meczid, $klubid, $punkty, $zdobyte, $stracone, $w, $p);
  67. $query->execute();
  68. $query->store_result();
  69. $count = $query->num_rows;
  70.  
  71. if($count == 0)
  72. {
  73. $query->close();
  74.  
  75. return false;
  76. }
  77. else
  78. {
  79.  
  80. while($query->fetch()) {
  81. $query1 = $this->mysqli->prepare("SELECT id, meczid, klubid, punkty,zdobyte, stracone, w, p FROM tabele WHERE klubid = ? AND meczid = ?");
  82. $query1->bind_param("ii", $b, $meczid);
  83. $query1->bind_result($id1, $meczid1, $klubid1, $punkty1, $zdobyte1, $stracone1, $w1, $p1);
  84. $query1->execute();
  85. $query1->store_result();
  86. $count = $query1->num_rows;
  87.  
  88.  
  89. if($count > 0) {
  90. while ($query1->fetch()) {
  91.  
  92. $tab[0] = $zdobyte;
  93. $tab[1] = $zdobyte1;
  94. return $tab;
  95.  
  96.  
  97. }
  98. }
  99.  
  100. }
  101. }
  102. }



Wynikiem tego kodu jest:
1. A
2. B
3. D
4. C
johny_s
Rozpisz sobie wynik na kartce, wyświetl dane i szukaj gdzie Ci się nie zgadza, ew. jakiś debuger
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.