Topic F: S1

Aushim
Master in de forumwetenschappen
Master in de forumwetenschappen
Berichten: 2628
Lid geworden op: 23 nov 2007, 23:02
Locatie: Haren
Contacteer:

Topic F: S1

Berichtdoor Aushim » 11 dec 2007, 22:04

Hieronder vinden jullie een van de oplossingen van S1: Factorial (faculteit) (met uitleg tussen haakjes).

Code: Selecteer alles

MODULE S1;
<* NOOPTIMIZE + *>
    FROM IO IMPORT RdChar, WrChar, WrStr, RdStr, WrLn, RdCard, WrCard, RdInt, WrInt, RdReal, WrReal, RdBool, WrBool;

    PROCEDURE Fac(x:CARDINAL): CARDINAL;  (*Procedure om een faculteit te bereken*)
      VAR result: CARDINAL; i: CARDINAL;
  BEGIN
    i:=1;
    result:= x;
     IF x<=1 THEN result:=1                (*Faculteit van 1 en 0 is 1, daarom wordt het als apart vgl gegeven*)
      ELSE
        REPEAT
        result:= result*(x-i);             (*Berekening van de faculteit*)
        i:= i+1;
        UNTIL i=x;
      END;
    RETURN result;
  END Fac;

    VAR n,result, p: CARDINAL;

BEGIN
     WrStr("De formule die we zullen gebruiken is: Cn,p = n!/(n-p)!*p!");
     WrLn;
     WrLn;
     WrStr("Geef een waarde voor n:");
     n:= RdCard();
     WrLn;
     REPEAT                               (*Indien p kleiner is dan n, moet er opnieuw p gevraagd worden*)
     WrStr("Geef een waarde voor p:");
     p:= RdCard();
     WrLn;
       IF p>n THEN                        (*Melden dat p kleiner moet zijn dan n*)
         WrStr("Je moet voor p een kleinere waarde ingeven dan ");WrCard(n,1);WrStr(" (de waarde van n)");
    WrLn;
    WrLn;
       END;
     UNTIL n >= p;
     result := Fac(n)/(Fac(n-p)*Fac(p));
    WrLn;
    WrStr("De uitkomst is "); WrCard(result, 0);
    WrLn;
END S1.

Terug naar “Oefeningen gemaakt in de klas”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron