Zum Inhalt springen

Rechnen mit Zahlen über int() Werten


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

$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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...