Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Einfaches Progammverständnis eines Codes (http://www.informatikerboard.de/board/thread.php?threadid=1126)


Geschrieben von Lucy am 10.01.2012 um 21:35:

  Einfaches Progammverständnis eines Codes

Meine Frage:
Hallo ,

hab wieder ein kleines Problem.

Ein Programm soll die Summe der ganzen Zahlen von 1 bis N berechnen.



beiden Lösungen A und B:

Lösung A:

Sum := 0;
for J in 1 .. N loop
Sum := Sum + J;
end loop;

Lösung : B
Sum := ((N + 1) * N) /2

Fragestellung :

- Warum ist Lösung A allgemeiner ? auf einen größeren Wertebereich anwendbar ?
als die Lösung B?
- Wie kann Lösung B umformuliert werden, um ihre Nachteile zu
beseitigen, aber trotzdem ohne Schleife auszukommen?


Meine Ideen:
Meine Theorien sind:

A ist allgemeiner ,weil es eine allgemeine For-Schleife ist ,die einfach die letzte Zahl als als Durchlaufende ansieht.
Bin aber aber nicht sicher, obs stimmt.

Hat B überhaupt Nachteile ?



Geschrieben von Karlito am 11.01.2012 um 01:43:

 

Hallo,

aus meiner Sicht ist deine Begründung nicht ganz richtig. Was ist denn an einer allgemeinen FOR-Schleife besser als an einer allgemeinen Multiplikation?

Ich denke der Vorteil von A ist, dass A ohne Multiplikation auskommt. Eine Maschine ohne Multiplizierwerk könnte das Programm also ausführen...

B hat den Nachteil, dass die Zahlen sehr groß werden (n^2), bevor die Division ausgeführt wird und das ergebnis sich wieder "verleinert". Das kann zu einem Überlauf führen.

Vermeiden könnte man das, indem man so umformt, dass die Zahlen nicht so groß werden.... Also Division eher ausführen...

Kannst ja mal einen Vorschlag machen, wie du das realisieren würdest.

VG,

Karlito


Forensoftware: Burning Board, entwickelt von WoltLab GmbH