Yngvar Geschrieben 11. Juni 2007 Geschrieben 11. Juni 2007 Tag auch, Ich hab mir etwas Arbeit gemacht und das pascalsche Dreieck dynamisch mti PHP aufgebaut. Jetzt soll es eine funktion geben, in der alle durch x teilbare Zahlen markiert werden solen. Ab der ca. 35. Zeile markiert er aber nichts mehr, weil die Zahl für interger zu hoch ist. Hier der Link zur Page: http://pascal.topfkuchration.de Hier der Code: <? if ($pascal == "fibonacci") {include("fibonacci.php");include("bon_color.php");} $hochzahl=0; $id = 1; $wert = 1; $reihe = 1; $platz = 1; $color_i = 0; $zahl[$reihe][$platz] = $wert; if($f==0){$wert=0;} $color[0] = ($c != "" AND $zahl[$reihe][$platz]%$c == 0) ? "red" : "white"; if($pascal=="fibonacci")$color_i++; echo "<br><div align=center><table border=1><tr><td width=$a height=$b align=center><font color=$color[$color_i] size=$d>".$f*$wert."</td></tr></table>"; if($pascal=="2erPotenz"){echo "2<sup>0</sup> = 1";$hochzahl++;} if ($pascal == "fibonacci")$color_i++; if ($pascal=="multinome") {echo"(a+<sup>$hochzahl</sup>=1";$hochzahl++;} while ($platz == $reihe) { $color[0] = ($c != "" AND $zahl[$reihe][$platz]%$c == 0) ? "red" : "white"; $bin_formel = ""; $bin_i = 1; $id++; $reihe++; $platz=1; $wert=1; $zahl[$reihe][$platz] = $wert; $zahl[$reihe][0] = 0; if($f==0){$wert=0;} echo "<table border=1><tr><td width=$a height=$b align=center><font color=$color[$color_i] size=$d>".$wert*$f."</td>"; if ($pascal == "fibonacci")$color_i++; $color_i2 = $color_i; while ($platz < $reihe) { $id++; $Nreihe = $reihe; $Nreihe--; $Aplatz = $platz; $platz++; $Bplatz = $platz; $Azahl = $zahl[$Nreihe][$Aplatz]; $Bzahl= $zahl[$Nreihe][$Bplatz]; $wert = $Azahl+$Bzahl; if($Aplatz == '0' OR $Bplatz == '0') $wert=1; $zahl[$reihe][$platz] = $wert; if($f==0){$wert=0;} $color[0] = ($c != "" AND $zahl[$reihe][$platz]%$c == 0) ? "red" : "white"; echo "<td width=$a height=$b align=center><font color=".$color[$color_i2]." size=$d> ".$wert*$f." </font></td>"; if ($pascal == "fibonacci")$color_i2++; if ($pascal=="multinome") {include("multinome.php");$bin_formel .= " · ";} } echo "</tr></table>"; //2er Potenz if ($pascal=="2erPotenz")include("2erPotenz.php"); // !!--!! 2er Potenz if ($pascal=="multinome") {include("multinome.php");echo"(a+<sup>$hochzahl</sup>=$bin_formel";$hochzahl++;} if($reihe > $e) exit; } echo "</td></tr></table>"; ?>[/code] Danke für alle Hilfe die ich bekomme, halte darüber nämlcih ein Referat, evtl. morgen O.o Gruß Felix Zitieren
geloescht_JesterDay Geschrieben 12. Juni 2007 Geschrieben 12. Juni 2007 Ich hab mir etwas Arbeit gemacht und das pascalsche Dreieck dynamisch mti PHP aufgebaut. Jetzt soll es eine funktion geben, in der alle durch x teilbare Zahlen markiert werden solen. Ab der ca. 35. Zeile markiert er aber nichts mehr, weil die Zahl für interger zu hoch ist. [...] Danke für alle Hilfe die ich bekomme, halte darüber nämlcih ein Referat, evtl. morgen O.o Du rechnest ja den Modulus aus um das zu erreichen, sch dir mal die Seite an: PHP: bcmod - Manual (auch das letzte Kommentar) Zitieren
Yngvar Geschrieben 12. Juni 2007 Autor Geschrieben 12. Juni 2007 $x ist demnach die Zahl durch die dividiert werden soll und $y der divitent. Richtig? Das Ergebnis der funktion ist das Ergebnis der Aufgabe? oder TRUE / FALSE ? Zitieren
geloescht_JesterDay Geschrieben 13. Juni 2007 Geschrieben 13. Juni 2007 $x ist der Divident und $y der Divisor, wobei ich mir nicht sicher bin, ob man das bei Modulus auch so nennt. Ich kann dir keine math. Regel dazu nenne, aber ein paar Stichproben zeigen, dass die Methode funktioniert (zumindest gehe ich mal davon aus jetzt). Das ganze wird so gemacht: Du nimmst eine bestimmte Anzahl an Ziffern vom Anfang deines Dividenden (die Zahl die geteilt werden soll). Diese Anzahl Ziffern bilden eine neue Zahl, die du "modulierst" (wie nennt man diesen Vorgang eigentlich?) Übrig bleibt der Rest der Division. Diesen Rest nimmst du und hängst die gleich Anzahl Ziffern vom Ursprungsdividenden ohne den schon genommenen Ziffern an. Und machst mit dieser neuen Zahl dasselbe. Am Ende bleibt ein Rest, welches der Rest der Gesamtdivision ist. Da du nur Teile der Zahl nimmst, kannst du sehr große Zahlen nehmen, nur der Modulus (Divisor) darf nicht > Int sein. Zitieren
Yngvar Geschrieben 19. Juni 2007 Autor Geschrieben 19. Juni 2007 Das funktioniert soweit, nur leider sind immernoch fehlerhafte darstellungen da. Man betrachte sich http://pascal.topfkuchration.de/?pascal=faktorium&tab=0 und gebe die zahl 22 ein. Ganz unten im Dreieck wird es nicht mehr richtig angezeigt. Obwohl es eigentlich müsste. Aber in diesem Bereich sind wir schon bei 1.2345678E+10 oder so was in der Art. Das sind für den Computer aber ja keine richtigen Zahlen mehr (die einer-Ziffer ist eine Unbekannte) Das Referat ist im übrigen gut gelaufen. War auch nicht anders zu erwarten Felix Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.