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;
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
vBulletin® v3.8.9, Copyright ©2000-2024, vBulletin Solutions, Inc.