PHP array_sum ist 1 zu viel

^^so braucht man seit neuestem gar kein benzin mehr bei der formel 1!

klärt mein problem leider aber auch net :( naja mal guckn
 
habs mit
PHP:
if(!function_exists('bcadd'))
{

function bcadd($param1,$param2,$param3=0)
{
$result = $param1 + $param2;
$result = round($result,$param3);
return $result;
}

}
versucht! funktioniert aba i-wie nicht!
naja ein anwendungsbeispiel wäre zum beispiel die anzahl der reiskörner auszurechnen die zB in dem einen märchen odda so vorkommen (ich glaub so n märchen gabs mal *überleg*)
dort wollte der eine so viele reiskörner dass er auf ein schachbrett auf jedes feld doppelt so viele wie aufs vorherige legen kann!
also müsste man das in dem fall bis 64 (soviele felder hat denk ich ein schachbrett) machen!
Ergänzung ()

bei dem hier geposteten implementierungsversuch kommt dann:

"Fatal error: Unsupported operand types in /usr/***.php on line 7"

Zeile 7 ist die mit:

PHP:
$result = $param1 + $param2;
 
also das mit schach ist einfach.. falls Schach 64 Felder hat -> 2^64 - 1 Reiskörner ... oder 65 oder 63 im exponenten.. müsst ich mir jetzt genauer überlegen ;)
Und das Ergebnis is erhebhlich interessanter als eine Zahl deren Anzahl der Ziffern man ohne künstliche Hilfe nicht fehlerfrei nachzählen kann!


das mit der implementation von der string addierugns funktion hast du vollkommen falsch verstanden.. Du sollst zwei Strings bestehend aus einer geordneten Liste von Zahlen wie in der Schule addieren..

zahl1 und zahl2 in ein array umwandeln .. zahl1[0] ist die ziffer ganz rechts usw...

overflow = 0;
for (Index i = 0 bis max(anzahl ziffer zahl1, anzahl ziffern zahl2) + 1) {
ergebnis = (zahl1 + zahl2 + overflow) modulus 10;
overflow = abrunden((zahl1 + zahl2 + overflow) / 10);
}

sind ja weniger zeilen als ich dachte ;) Diese funktion addiert zwei beliebig lange Zahlen.

ich rechne ganz einfach wie damals in der Grundschule.. das solltest du doch noch hinbekommen ;)
 
"zahl1 und zahl2 in ein array umwandeln .. zahl1[0] ist die ziffer ganz rechts usw..."

dürft ich dann mal so als beispiel die werte in diesem fall von den arrays erfahren! sry aba steh aufm schlauch
 
1234
array(4,3,2,1);

4512 + 199
zahl1 array(2,1,5,4)
zahl2 array(9,9,1);

"DIV 10" := durch 10 teilen und abrunden
"MOD 10" := durch 10 teilen, und den rest nehmen

overflow startet mit 0
i = 0;
ergebnis[0] = 9 + 2 MOD 10 = 11 MOD 10 = 1
überlauf = (9 + 2 + 0 ) DIV 10 = 1,1 abgerundet = 1

i= 1
ergebnis [1] = 9 + 1 + 1 mod 10 = 1
überlauf = (9 + 1 + 1) DIV 10 = 1

i = 2
ergebnis[2] = 1 + 5 + 1 MOD 10 = 7
überlauf = .. = 0

I = 3:
ergebnis[3] = 0 + 4 + 0 MOD 10 = 4
überlauf = .. = 0;

ergebnis = array(1, 1, 7, 4) = 4711 = 4512 + 199

Rechnen wie in der Grundschule.. sollte doch ned so schwer sein ;)



Aber ich glaub in deinem Fall solltest du wirklich lieber mal prüfen ob du das wirklich brauchst... wenn du wirklich nur zweierpotenzen addieren willst, dann bekommst du das viel einfacher hin...
 
Zuletzt bearbeitet:
lol ich versteh echt i-wie nurnoch bahnhof :freak:

also zB
array (
[0]=>1
[2]=>2
[3]=>4
[4]=>8)

oda versteh ich des schonwidda falsch (weil des hab ich ja eigentlich zurzeit)

:eek: *net durchblick* :eek:
 
jaja der inhalt des arrays ist dann schon klar^^

jetz kapier ichs glaub ich!

sag doch einfach dass du 2 zahlen addierst und dann abrundest!
die kommazahl die übrig bleiben würde, hängst du dann an die nächste rechnung hin!

jetz hab ichs oda?!


und die elemente im array sind einfach die ziffern der zahl umgedreht!

richtig?
 
Zurück
Oben