Hochzahl berechnen

DerEisige

Erfahrenes Mitglied
Hallo mir wurde eine Aufgabe von meinem lehre aufgegeben, und nun kommt ich einfach nicht mehr weiter.

Bei meinen Ergebnissen kommt immer ab dem zweiten Ergebnis immer INF.

PHP:
<?php
$alter = array();

for($i = 1; $i <= 11; $i++){
    do{
        $rand = rand(2,17);
    }while(in_array($rand, $alter));
    $alter[$i] = $rand;
    
    if($i == 11){
        $alter[$i] = $rand;
        $i ++;
        $alter[$i] = $rand;
        
        $o++;
        $zwillinge = "[".$o."par] = ".$alter[$i]."<br />";
    }else {
        if($i >= 10){
            $personen .= "[".$i."] = ".$alter[$i]."<br />";
        }else {
            $personen .= "[0".$i."] = ".$alter[$i]."<br />";
        }
    }
}

$n = count($alter);
for($i = 1; $i <= count($alter); $i++){
    if($i == 1){
        $rechnung = $alter[$i];
        $hochzahl = $alter[$i];
    }else {
        $rechnung .="^".$alter[$i];
        $hochzahl = pow($hochzahl, $alter[$i]);   
    }
    
    if($i >= 10){
        $ergebnisse .= "[".$i."] ".$rechnung." = ".$hochzahl."<br />";
    }else{
        $ergebnisse .= "[0".$i."] ".$rechnung." = ".$hochzahl."<br />";
    }
}
$wurzel = pow($hochzahl, (1/12));
?>
<style type="text/css">
*{ margin: 0px; padding: 0px; list-style-type: none; text-decoration: none; text-align: left; vertical-align: top; }
.rand{
	padding-left: 10px;
}
body{ width: 1000px; margin: 0px auto 0px auto; font-family: Arial, Helvetica, sans-serif; }
</style>

<table>
    <tr>
        <th colspan="2">Altersangaben</th>
    </tr>
    <tr>
    	<th width="150">Personen:</th>
    	<th width="10">&emsp;</th>
        <th >Rechnung:</th>
    </tr>
    <tr>
        <td class="rand"><?= $personen;?></td>
        <td class="rand">&emsp;</td>
        <td class="rand"><?= $ergebnisse;?></td>
    </tr>
    <tr>
        <th>Zwillinge:</th>
    </tr>
    <tr>
        <td class="rand"><?= $zwillinge;?></td>
    </tr>
    <tr>
        <th>Wurzel:</th>
    </tr>
    <tr>
        <td colspan="3" class="rand"><?= $wurzel;?></td>
    </tr>
</table>
 
Zuletzt bearbeitet:
Mir sind jetzt ad hoc zwei Sachen aufgefallen: einerseits frage ich mich, an welcher Stelle die Variable $o definiert wird, andererseits bin ich mir unsicher, welchen Sinn folgender Teil hat:
PHP:
do {
  $rand = rand( 2, 17 );
} while ( in_array( $rand, $alter ) );
 
Die Aufgabe ist das ich 12 Jugendliche habe, bei denen 1 Zwillings par dabei ist.
Die Jugendlichen sind im alter zwischen 2-17 und jedes alter darf nur einmal verwendet werden.
 
Sauberer könntest Du das wie folgt bestimmen. Du erhälst ein Array mit zehn Werten, wobei jeder Wert zwei weitere Werte enthält: das Alter und die Anzahl der Geschwister. Also hast Du genau eine Eintrag, bei dem die Anzahl der Geschwister eins ist, sonst null:
PHP:
$ages   = range( 2, 17 );
$keys   = array_rand( $ages, 10 );
$people = array();

foreach ( $keys as $key ) {
  $people[] = array( "age" => $ages[ $key ], "siblings" => 0 );
}

$twins = rand( 0, 9 );
$people[ $twins ][ "siblings" ] = 1;
 
Ich versteh die Aufgabe nicht...
Der Grund für INF ist wohl, dass wenn du immer wieder Potenzierst, relativ schnell das Speicherende des Integers erreichst. Für mich ergibt die rechnung aber auch absolut keinen Sinn.
 
Dann rechne mal mit den Taschenrechner was du da mit PHP rechnest und guck mal, wann du nen MATH ERR bekommst :p
 
Ich vermute mal, dass INF für Infinity steht und angibt, dass die von Dir berechnete Zahl zu groß ist. Das was Du berechnen willst, wäre größer als 10 hoch 10.000.000.000! Eine Zahl die so groß ist, dass selbst Wolfram|Alpha sie nicht mehr ausrechnet. Und bei PHP ist die maximale Größe 9223372036854775807 – das haut also nicht hin.
 
oke Danke das Heist ich habe 1 1/2 stunden meines Lebens vergeudet.
da kann man nur sagen danke für die Aufgabe Lehrer.
 
Zurück