PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahlen vortlaufend Addieren ....


Cerberus
10.11.2008, 22:06
Wir hatten gerade dieses Problem ...

Aufgabe: Addiere alle ganzen Zahlen von 0 - 10.000 auf ....

Wie macht man das -- und was kommt raus .....

DirtyPlaya
10.11.2008, 22:07
:confused::confused:oje was soll den das werde???

Cerberus
10.11.2008, 22:11
ein bissel was, was die Leute hier wissen müssten ...

die meisten sind Schüler und sollten das intus haben ...

Sogar ohne Tante Google

sonst: :no::no:

tantetoni2
10.11.2008, 22:30
vielleicht so

$ergebnis=0;
for ( $x = 0; $x <= 10000; $x++ )
{
for ( $i = 0; $i <= 10000; $i++ )
{

$ergebnis = $ergebnis+$i;


}
}
echo $ergebnis;

da kommt 500100005000 raus

Cerberus
10.11.2008, 22:34
zu viel rechnerei ...

1 Zeile ist Notwendig .....

dauert zu lange :)

sorry ....

tantetoni2
10.11.2008, 22:37
hab was gefunden echo pow(10000,10000);

number pow ( number $base, number $exp )

Mit pow() kann man die Zahl base mit dem Faktor exp potenzieren (base hoch exp) lassen.


Beispiel


<?PHP
echo pow ( 3, 4 );
// Ergibt 3 * 3 * 3 * 3 = 81
?>

Cerberus
10.11.2008, 22:40
löl ....

der weiß das sicher .....

aba schon komisch -- wir ham sowas in der Schule gehabt ...

ist bei mir nu ca. 15 Jahre her

tantetoni2
10.11.2008, 22:45
ja funzt kommt das gleiche raus wie mit den beiden schleifen

Cerberus
10.11.2008, 22:48
also dien Ergebnis ist leider Falsch ....

du sollte ja nicht zur Vorherigen Summe die neue Zahl addieren, sondern du sollt ja rechnen
0+1+2+3+4+5+6+7+8+9+.....Ergebnis der Aufgabe ist: 50005000

tantetoni2
10.11.2008, 22:49
achso meinst du das dann habe ich es falsch verstanden



--======================================--
--== automatische Beitragszusammenführung ==--
--======================================--


tantetoni2 schrieb nach 4 Minuten und 29 Sekunden:

dann musste es so machen
$ergebnis=0;
for ( $i = 0; $i <= 10000; $i++ ) { $ergebnis = $ergebnis+$i; }
echo $ergebnis;

HaBe
10.11.2008, 22:55
ich kenne das nur in kleinerem maßstab mit den zahlen von 0 - 100, aber denke das prinzip ist gleich:
man nimmt immer die jeweils erste und letzte noch nicht betrachtete zahl und addiert diese => das ergebnis ist immer 100. das macht man dann eben 50 mal und hat dann noch die 50 übrig => 5050. überträgt man das auf diese aufgabe, so kommt man zum gesuchten ergebnis...

Solstice
10.11.2008, 23:01
Alle aufaddieren ist doch leicht...
is so ähnlich wie die fakulät.

Berechnung:
function adding($zahl)
{
if ($zahl == 0)
return 0;

return adding($zahl - 1) + $zahl ;
}is ne rekursive funktion...
bei 10.000 zieht die natütlich etwas, aber so ist es richtig berechnet, und einfacher gehts auch nicht.

mfg,
Sol

Ps.: is auch noch volldynamisch XD

Cerberus
11.11.2008, 07:17
alles viel zu kompliziert ...
und der Ansatz von HaBe ist zwar gut -- aber die Lösung ist trotzdem falsch ...

leider...

Wenn ich es auflösen soll, müßt ihrs nur sagen :D

Solstice
11.11.2008, 07:45
also die lösung von meinem is richtig...
oder wie mneinst du dass es berechnet werden soll....?

ich dachte alle zahlen von 0- *übergebene Zahl* aufaddieren.
das tut die funktion...
habs spasseshalber auch ausprobiert...

mfg,
Sol

Cerberus
11.11.2008, 08:01
ja schon ...

aber erstens dauert es zu lange und zweitens rechnest du zu viel ....

es gibt für das Problem eine einzige Formel :)
ohne Schleife oder sonstwas :)

PS: das kann man so auch auf nem Zettel rechnen -- mit ner Schleife wird das "Problematisch"

GlasFist
11.11.2008, 08:05
also ich würds auch so wie tantetoni2 machen

$ergebnis=0;
for ( $x = 0; $x <= 10000; $x++ )
{
for ( $i = 0; $i <= 10000; $i++ )
{

$ergebnis = $ergebnis+$i;


}
}
echo $ergebnis;

Cerberus
11.11.2008, 08:06
ist aber falsch !!!!

GlasFist
11.11.2008, 08:10
naja ich mein ja nur so hätte ich es spontan auch gemacht....

später vllt so wie sol aber in einer zeile kA

von mir aus auflösen

Cerberus
11.11.2008, 16:21
hmm ...
kommt noch was hier ???

sonst löß ich heute Abend mal auf :)



--======================================--
--== automatische Beitragszusammenführung ==--
--======================================--


Cerberus schrieb nach 16 Stunden, 24 Minuten und 38 Sekunden:

so ...

dann will ich euch mal "erlösen" .....

die Formel lautet:
x=(n+1)*(n/2)mal zu Erklärung:
Nehmen wir mal die Zahlen von 1-10.
10 + 1 = 11
9 + 2 = 11
8 + 3 = 11
7 + 4 = 11
6 + 5 = 11

Weiter müssen wir nicht Addieren, da wir ja jetzt schon in der Mitte angekommen sind. Wir haben also 5 Additionen durchgeführt. Anhand des Ergebnisses sehen wir, das es immer um 1 größer ist, als die Zahl, bis zu welcher wir Aufaddieren sollen.

Daraus ergibt sich diese Formel :)

So -- nu habt ihr was, um in der Schule zu "bransen" :D

PS: der Entdecker dieses Umstandes ist Carl Gustav von Gaus ....
Nachzulesen in jedem Lexikon, bei Google oder der Wikipedia