Fakultät mit Turbopascal berechnen

Xeal87

Erfahrenes Mitglied
Hallo.
Da ich mit der Schule drei Wochen in Amerika war, habe ich natürlich den Unterricht verpasst. Insbesondere in den Informatikstunden bereue ich es ein wenig, da wir begebracht bekamen, wie wir eine Fakultät in Turbopascal berechnen. Hier der code (ich weiss, es gibt auch andere Lösungen... aber ich wills so machen, wie es unser Lehrer beigebracht hat):
--------------------------------------------------------------------------------------------
Program Fakultaet;
Var
Fak: Real;
n,i: Word;
Begin
Readln (n);
Fak:=1;
For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
End.
----------------------------------------------------------------------------------------------
Ich weiss das das programm nicht gerade schwer ist, aber Ich liste trotzdem mal auf, was ich nicht verstehe und wo ich Fragen habe:
- Warum heißt es, dass "n" und "i" "wörter" sind ? Ist es egal, als was sie definiert werden ?
- Könnt ihr mir das erläutern:
_______
Readln (n);
Fak:=1;
For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
__________

- Welche Rolle spielt die Variable "i" ?!
Ich würde euch sehr dafür danken !
 
Zuletzt bearbeitet:
ok, bin zwar schon ewig von tp weg (so ca. 15 jahre), aber das ist wirklich nicht weiter wild:

Program Fakultaet;

Deklarationen

Var
Fak: Real;
n,i: Word;
Begin

Eingabe des Benutzers fordern.
Da readln verwendet wird, erhält man als Rückgabe einen String, der allerdings
eine Zahl darstellen sollte (z.B. "4").
Ein Problem gibt es, sollte der User etwas alphanumerisches eingeben...nun ja

Readln (n);
Fak:=1;

Die Variable i dient nur als Zählvariable der For-Schleife. Diese wird n Mal durchlaufen. Das i wird ansonsten nicht verwendet.

For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
End.

Hehe, hoffe, das das jetzt nicht total daneben war :)
 
Ich hab mich mal in die saudumme maschiene (acuh pc genannt) versetzt und bin dabei das ganze zu verstehen.
also die fakultät von 4 zum beispiel lautet ja:
!4=4*3*2*1
Der Computer zählt also so lange zu der zahl zwei eins dazu bis n erreicht wurde und multipliziert das dann miteinandern ?!
Danke schonmal
 
Original geschrieben von Masaker
Ich hab mich mal in die saudumme maschiene (acuh pc genannt) versetzt und bin dabei das ganze zu verstehen.
also die fakultät von 4 zum beispiel lautet ja:
!4=4*3*2*1
Der Computer zählt also so lange zu der zahl zwei eins dazu bis n erreicht wurde und multipliziert das dann miteinandern ?!
Danke schonmal

richtig muss es heissen:

... und multipliziert JEDESMAL miteinander

und deine eher "ungewöhnliche" formulierung müsste eigentlich so heissen, was nach kommutativgesetz allerdings wirklich schnuppe ist: 4! => 1*2*3*4
Deswegen fängt das gute Programm auch bei 2 an zu zählen, da *1 ja doch nicht wirklich was Aufwendiges ist ;)
 
<klugscheiss>
Die Mathematische Schreibweise sieht jedoch vor, mit der größten Zahl anzufangen, also 4*3*2*1, da sich so beim späteren gegeneinanderrechnen und kürzen von Fakultäten Vorteile ergeben (sollen) ...
</klugscheiss>
Meine zumindest, das so aus Mathe in Erinnerung haben zu müssen.
 
Also bei mir ist Mathe noch nicht so lange her *g*
Bin grad 11te klasse und es ist wirklich egal wie man es schreibt, aber das Programm beginnt mit der 1 und endet mit der zahl n
 
-

Hallo.
Also readln() gibt hier keinen String zurück, da es keine Funktion ist. Außerdem ist der Datentyp "word" kein 'Wort', sondern stellt den Wertebereich von 0-65535 zur Verfügung. Hinzu kommt, dass es blödsinn ist, hier Fak als Real-Datentyp zu nehmen, da du niemals Nachkommastellen benötigst.
 
Also das würd ich mir nochmal genau überlegen, ob der real datentyp da so unsinnig ist.
Die Fakultät ist nämlich eine der am schnellsten wachsenden funktionen.
Bsp:
!5 = 120
!10 =518400
Also denke ich schon das real da ganz ok ist
 

Neue Beiträge

Zurück