Ankündigung

Einklappen
Keine Ankündigung bisher.

Endlosschleife mit Array?!

Einklappen

Neue Werbung 2019

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

  • Endlosschleife mit Array?!

    Hallo,
    ich hab ein Script programmiert, welches mir ein Pascalsches Dreieck erstellen soll.

    PHP-Code:
    <?php
    $max_rows 
    15// Maximale Anzahl an auszurechnenden Reihen
    $rows 3// Anzahl der auszurechnenden Reihen

      
    $dreieck = array( // Matrix definieren
                  
    => array( // 1. Reihe schon gegeben
                        
    => 1
                       
    ),
                  
    => array( // 2. Reihe auch
                        
    => 1,
                        
    => 1
                       
    )
                 );
      for(
    $i=3;$i<$rows;$i++) {
        for(
    $j=1;$j<$i+1;$j++) {
          if (
    $j=1) {
            
    $dreieck[$i][$j] = 1;
          } elseif (
    $j=$i) {
            
    $dreieck[$i][$j] = 1;
          } else {
            
    $dreieck[$i][$j] = $dreieck[$i-1][$j-1]+$dreieck[$i-1][$j];
          }
        }
      }
      for(
    $i=1;$i<count($dreieck)+1;$i++) {
        for(
    $j=1;$i<count($dreieck[$i])+1;$j++) {
          
    $zahl $dreieck[$i][$j];
          echo 
    $zahl."";
        }
      }
    ?>
    Allerdings ergibt das nur unendlich oft eine "1".
    Mit "array_push" habe ich es auch schon probiert, hat auch nicht funktioniert.
    "print_r($dreieck);" gibt "Array ( [1] => Array ( [1] => 1 ) [2] => Array ( [1] => 1 [2] => 1 ) ) 1" aus, was im oberen Teil schon vorgegeben ist. Weiß jemand, was ich falsch gemacht habe? Wäre für jeden Tipp dankbar!

    Die Matrix ist so aufgebaut:


    thx im vorraus,
    DaNnYy

  • #2
    if ($j=1) {
    Möchtest du vergleichen ob $j gleich 1 ist? Dann versuche es mal mit == statt =

    Kommentar


    • #3
      Zitat von -->bigJay<--
      Möchtest du vergleichen ob $j gleich 1 ist? Dann versuche es mal mit == statt =
      Oh, peinlich *schäm* Passiert mir total oft...

      Aber die Endlosschleife bleibt. Jetzt wird eine "1" und dann unednlich viele Leerzeichen ausgegeben.

      Was ist da falsch? Ich probier schon seit über 2 Tagen daran herum.

      thx
      DaNnYy

      Kommentar


      • #4
        for($i=3;$i<$rows;$i++) {
        er fängt mit 3 zu zählen solang bis $i kleiner als $rows=3 ist ??????
        Ich kann den konkreten Fehler grad auch nicht finden, dazu müsste ich das mal kurz testen--> geht aber net muss jetzt dringend weg. Aber eigentlich würde ich so etwas mit einer Funktion darstellen, ich bin der Meinung es würde mit einer Funktion leichter gehen.

        Kommentar


        • #5
          Danke für die Antworten!
          "3" war nur mein letzter Test. Mit anderen Zahlen (>3) funktioniert es auch nicht.
          Die Endlosschleife passiert erst bei der Ausgabe, habe ich gerade festgestellt.

          Die dritte Reihe der Matrix wird auch noch richtig gefüllt. Nur danach geht's nicht richtig weiter. "push_array" liefert: Array ( [1] => Array ( [1] => 1 ) [2] => Array ( [1] => 1 [2] => 1 ) [3] => Array ( [] => 0 [1] => 1 [2] => 2 [3] => 1 ) [4] => Array ( [4] => 1 ) [5] => Array ( [5] => 1 ) )
          Sind also gleich zwei Probleme

          thx
          DaNnYy

          Kommentar


          • #6
            du hast auch gesehen, dass nicht nur if($j==1) heißt, sondern auch bei elseif($j==$i) hinkommt?

            Kommentar


            • #7
              Zitat von Paine
              du hast auch gesehen, dass nicht nur if($j==1) heißt, sondern auch bei elseif($j==$i) hinkommt?
              Jo, hab ich auch da geändert

              thx
              DaNnYy

              Kommentar


              • #8
                PHP-Code:
                  class pd {

                    var 
                $depth;
                    var 
                $values;

                    function 
                pd($depth) {
                      
                $this->depth $depth;
                      
                $this->values = array();
                    }

                    function 
                generate($values = array(1), $level 0) {
                      if (
                $level == $this->depth)
                        return;

                      for (
                $i=0$i<=$level$i++) {
                        
                $thatValues[$i] =
                          ((isset(
                $values[$i-1])) ? $values[$i-1] : 0) +
                          ((isset(
                $values[$i])) ? $values[$i] : 0);
                      }

                      
                $this->values[$level 1] = $thatValues;

                      
                $this->generate($thatValues$level 1);

                    }

                    function 
                show() {
                      
                $this->generate();
                      for (
                $i=1$i<=$this->depth$i++)
                        echo 
                '<pre style="text-align:center;">'.implode (' - '$this->values[$i]).'</pre>';
                    }
                  }
                  
                  
                $Pd = &new pd(10);
                  
                $Pd->show(); 
                probier mal sollte unkommentiert zu verstehen sein!?
                [URL=http://www.mozilla.org/products/firefox/][img]http://www.nophia.de/misc/spreadtheword/feuerfuchs.gif[/img][/URL]

                Kommentar


                • #9
                  Zitat von derHund
                  probier mal sollte unkommentiert zu verstehen sein!?
                  Ehrlich gesagt, ich versteh' nur Bahnhof
                  Ich check das ganze noch nicht so ganz. Ich bin froh, wenn ich eine Suchfunktion für eine Datenbank gebastelt hab ^^.

                  Aber: vielen, vielen Dank! Es funktioniert!!
                  DaNnYy

                  Kommentar

                  Lädt...
                  X