was mach ich falsch? spielplan-matrix

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • was mach ich falsch? spielplan-matrix

    hallo zusammen, ich will kurz erklären worum es geht.

    ich habe eine online liga für pes5 erstellt und habe in meiner datenbank eine tabelle mit allen teams.

    um ein jeder gegen jeden dort auszulesen reicht ein einfacher sql befehl, was auch kein problem ist.

    ich möchte allerdings auch eine einteilung nach spieltagen haben und habe dazu folgende seite gefunden:

    http://www.stefan-taube.de/liga.htm

    der vereinfachte quelltext ist in c# und er funktioniert einwandfrei, ich habe ihn sogar schon etwas übersichtlicher gestalltet um ihn besser in php umschreiben zu können:

    PHP-Code:
    using System;
    class 
    LigaAlgorithmus
    {
        
    // st[i,j] ist der Spieltag an dem i gegen j spielt.
        
    static void Calc(int Teams)
        {
            
    int i 0;
            
    int j 0;
            
    int a 0;
            
    int b 0;
            
    int Spieltag 0;
            
    int Spieltage 0;
            
    int [,] Spiel = new int[Teams 1Teams 1];
            
            if (
    Teams == 0)
                
    Spieltage Teams 1;
            else
                
    Spieltage Teams;
            
            for(
    <= Spieltagei++)
            {
                
    Spieltag++;
                
    1;
                
    i;
                for(
    1<= Spieltagej++)
                {
                    if (
    bSpiel[ab] = Spieltag;
                    
    a++;
                    
    b--;
                    if (
    1Spieltage;
                }
            }

            if (
    Spieltage Teams)
                for (
    1Teamsi++)
                    if (
    == 1)
                        
    Spiel[iTeams] = 1;
                    else
                        
    Spiel[iTeams] = Spiel[1i] + 1;

            for (
    1<= Teamsi++)
                for (
    1ij++)
                    
    Spiel[ij] = Spiel[ji] + Spieltage;

            for (
    1<= Teamsi++)
            {
                for (
    1<= Teamsj++)
                    
    Console.Write(" " Spiel[ij].ToString());
                
    Console.WriteLine();
            }

            
    Console.ReadLine();
        }
        [
    STAThread]
        static 
    void Main(string[] args)
        {
            
    Calc(4);
        }

    So, in PHP umgesetzt sieht das für mich so aus:

    PHP-Code:
    $Teams 4;

    $i 0;
    $j 0;
    $a 0;
    $b 0;
    $Spieltag 0;

    if (
    $Teams == 0)
        
    $Spieltage $Teams 1;
    else
        
    $Spieltage $Teams;
        
    $Spiel = array();
    for (
    $i 0$i <= $Teams$i++)
        for (
    $j 0$j <= $Teams$j++)
            
    $Spiel[$i][$j] = 0;
        
    for(
    $i $i <= $Spieltage$i++)
    {
        
    $Spieltag++;
        
    $a 1;
        
    $b i;
        for(
    $j 1$j <= $Spieltage$j++)
        {
            if (
    $a $b$Spiel[$a][$b] = $Spieltag;
            
    $a++;
            
    $b--;
            if (
    $b 1$b $Spieltage;
        }
    }
    if (
    $Spieltage $Teams)
        for (
    $i 1$i $Teams$i++)
            if (
    $i == 1)
                
    $Spiel[$i][$Teams] = 1;
            else
                
    $SPiel[$i][$Teams] = $Spiel[$i 1][$i] + 1;
            
    for (
    $i 1$i <= $Teams$i++)
        for (
    $j 1$j $i$j++)
            
    $Spiel[$i][$j] = $Spiel[$j][$i] + $Spieltage;

    for (
    $i 1$i <= $Teams$i++)
    {
        for (
    $j 1$j <= $Teams$j++)
            echo 
    ' ' $Spiel[$i][$j];
        echo 
    '<br>';

    Nur das Problem an der ganzen Sache ist, das die Ausgaben leider völlig unterschiedlich sind, was ich nicht ganz verstehe...

    Code:
    C# Ausgabe:
    
     0 2 3 1
     5 0 1 3
     6 4 0 2
     4 6 5 0
    Code:
    PHP Ausgabe:
    
     0 0 0 1
     3 0 3 0
     3 6 0 0
     4 3 3 0
    Also, wie bereits erwähnt ist die C#-Ausgabe korrekt; sie gibt mir an an welchem Spieltag das jeweilige Spiel (x - y oder i - j) statt findet...

    da es ja logisch funktioniert muss es ja eigentlich an der übersetzung in php scheitern... evt. an der art der verwendung des arrays? ich bin verzweifelt und ratlos...

    Kann mir das jemand erklären, hab ich was übersehen?


    Hilfe!

    Gruß, snx
    Zuletzt geändert von snx; 14.12.2005, 12:01.

  • #2
    danke, aber es hat sich erledigt... :-/

    nach 3 stunden erfolgloser suche und überlegen postet man was und ein paar minuten darauf sieht man alles...

    also sorry für den post.


    falls es jemanden interessiert woran es lag:

    $b = i;

    statt

    $b = $i;

    hat schon vertale folgen...
    wenn man dazu noch einmal

    SPiel[...]

    statt

    Spiel[...]

    benutzt sollte man sich über fehler nicht wundern...
    das is halt der nachteil an php, wie ich finde... er akzeptiert alles und meckert nie... :-/

    naja, bis dahin

    Kommentar


    • #3
      Original geschrieben von snx
      das is halt der nachteil an php, wie ich finde... er akzeptiert alles und meckert nie... :-/
      PHP äußert sich sehr detailiert zu deinen Fehlern - du musst es ihm nur erlauben.
      http://www.php.net/manual/de/ref.errorfunc.php
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        ähm, ok, aber ich meinte ja auch keine direkten fehler.

        sondern eben das falsche aus meinem programm:

        wenn man SPiel statt Spiel schreibt ist es ja kein direkter Fehler, es sind halt 2 unterscheidliche Variablen und mit meiner äußerung meinte ich:

        es ist zwar schön das man variablen nciht immer extra deklarieren muss, aber solche sachen würden dann nicht auftreten.

        oder kann ich ihm die deklarierung auch als muss bei bringen?

        Kommentar


        • #5
          Original geschrieben von snx
          wenn man SPiel statt Spiel schreibt ist es ja kein direkter Fehler
          Doch, wenn du auf eine solche Variable zuzugreifen versuchst, ohne sie vorher mit einem Wert initialisiert zu haben, weist die PHP auch darauf hin.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X