tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1125
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Xeal87
    Xeal87 Xeal87 ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    174
    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 !
    Geändert von Xeal87 (04.11.03 um 15:05 Uhr)
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Dresden
    Beiträge
    527
    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
     

  3. #3
    Avatar von Xeal87
    Xeal87 Xeal87 ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    174
    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
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Dresden
    Beiträge
    527
    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
     

  5. #5
    Registriert seit
    Dec 2001
    Beiträge
    4.791
    <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.
     

  6. #6
    Registriert seit
    Aug 2003
    Ort
    Dresden
    Beiträge
    527


    mathe? wasn das? schon ewig her...

    *mit dem krückstock fuchtel*
     

  7. #7
    Avatar von Xeal87
    Xeal87 Xeal87 ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    174
    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
     

  8. #8
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    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.
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

  9. #9
    Avatar von Xeal87
    Xeal87 Xeal87 ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    174
    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
    ***0 =518400
    Also denke ich schon das real da ganz ok ist
     

  10. #10
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Nimm long

    Real-Werte sind Gleitkomma-Zahlen, mit denen Vergleiche (if) sehr nervenaufreibend sein können.
     

  11. #11
    Avatar von Xeal87
    Xeal87 Xeal87 ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    174
    aber real kann doch viel größere zahlen darstellen, wenn ich mich nicht täusche oder ?
     

  12. #12
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Wenn schon grosse Zahlen, dann könntest du auch gleich extended nehmen!
    Sind aber halt keine genauen Zahlen, je länger der Wert wird.
     

Ähnliche Themen

  1. Fakultät für 100 berechnen
    Von Neuling 765 im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 19.01.10, 16:02
  2. Antworten: 11
    Letzter Beitrag: 17.03.06, 16:14
  3. Listen in TurboPascal!
    Von SvenMueller im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 20.05.04, 15:09
  4. Dateierstellung mit TurboPascal auf WinXP
    Von Karl Förster im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 27.11.03, 22:21
  5. Fakultät im Java Pseudocode berechnen
    Von MS[shady] im Forum Java
    Antworten: 10
    Letzter Beitrag: 11.09.03, 07:28