Jan: Java-Script - EM Plan-Probleme....

Hallo

Ich brauche Hilfe für ein Informatik-Projekt, mit JavaScript. Aufgabe ist einen EM - 2004 Spielplan zu erstellen, mit Eingabefeldern für alle Spielergebnisse. Dann soll auf Knopfdruck (und mit JavaScript) die resultierende Punktzahl und das Torverhältnis angegeben werden. Bis hierhin klappt auch alles wunderbar. Aber mein Problem ist:

Ich muss den Ersten der Gruppe A gegen den Zweiten der Gruppe B "spielen lassen". Ich habe den ersten anhand der Punktzahl mit if-Abfragen definiert, und das mit dem Torverhältniss wird auch so klappen. Aber ich habe keine Ahnung, wie ich den zweiten ermitteln soll!!! Würde ich das auch mit If-Abfragen machen, kämen gute 3 Seiten Quelltext alleine für eine Gruppe raus!
Gibt es einen Befehl, mit dem ich die höchste, zweithöchste usw. aus mehreren Variablen raussuchen kann?! Ich bin Anfänger in Sachen JavaScript...

Danke schonmal für Hilfe
Jan

  1. Hallo,

    ich hätte folgenden Lösungsansatz: Man kann die Ergebnisse innerhalb einer quadratischen Matrix darstellen. Eine Tabelle könnte wie folgt aussehen:

    | 1 2 3 4
    ------------
    1 | 0 3 0 2
    2 | 2 0 3 1
    3 | 0 1 0 0
    4 | 2 4 5 0

    Das Element in der i-ten Zeile und in der j-ten Spalte gibt an, wieviele Tore die Mannschaft, die in der i-ten Zeile steht gegen die Mannschaft in der j-ten Spalte geschossen hat. Es bietet sich an, die Hauptdiagonale mit Nullen zu belegen. Um zu ermitteln, wie vile Punkte eine Mannschaft erkämpft hat, geht man die Zeile, in der die Mannschaft steht, durch und vergleicht die Werte mit den Werten, die in der der Mannschaft entsprechenden Spalte stehen und vergibt auch dementsprechend drei, einen oder null Punkte.

    function auswerten(erg) {   // erg ist ein mehrdimensionales Array (4x4)
       var tab  = new Array(1, 2, 3, 4); // Tabelle
       var tor = new Array(4);  // Anzahl der Tore
       var pkt  = new Array(4); // Anzahl der Punkte

    for (var z=0; z<3; z++) {      // z: Zeile
          for (var s=z+1; s<4; s++) { // s: Spalte
             tor[z] += erg[z][s];
             tor[s] += erg[s][z];

    if (erg[z][s] > erg[s][z])
                pkt[z][s] += 3;
             elsif (erg[z][s] == erg[s][z]) {
                pkt[z][s]++;
                pkt[s][z]++;
             }
          }
       }
       // eine etwas abgewandelte Version von Insertion-Sort unter Beachtung von Punkten und Toren eignet sich ganz gut zum Sortieren von 4 Elementen
       for (var i=1; i<4; i++) {
          var pm = pkt[i];   // Punkte-Merker
          var gm = tor[i];   // Tore-Merker
          var tm = tab[i];   // Tabellenplatz-Merker
          var j = i-1;
          while (j>-1 && pkt[j] > pm) {
             pkt[j+1] = pkt[j];
             tor[j+1] = tor[j];
             tab[j+1] = tab[j];
             j--;
          }

    if (pkt[j] == pm && tor[j] < gm) { // jetzt kommt es auf die Tore an
             pkt[j+1] = pkt[j]; pkt[j] = pm;
             tor[j+1] = tor[j]; tor[j] = gm;
             tab[j+1] = tab[j]; tab[j] = tm;
          }
          else {
             pkt[j+1] = pm;
             tor[j+1] = gm;
             tab[j+1] = tm;
          }
       }
       return tab;
    }

    Diese Funktion sollte die Reihenfolge der Mannschaften zurückgeben.

    Mit freundlichen Grüßen
       Dimitri Rettig

    1. Hallo und Danke für die Hilfe!

      Ich schau da zwar noch nicht ganz durch wie das funktionieren soll... aber ich werds mal probieren... muss ich die tabellen denn irgendwie als quadratische matrix definieren?!

      Jan

      1. Hallo Jan, ,

        muss ich die tabellen denn irgendwie als quadratische matrix definieren?!

        Eine quadratische Matrix ist ein mehrdimensionales Array (siehe SelfHTML)

        Mit freundlichen Grüßen
           Dimitri Rettig