Hallo
ich brauche unbedingt hilfe...
wir müssen in der schule mal wieder ein programm schreiben und ich finde meinen fehler nicht
es handelt sich um ein programm zum berechnen einer potenz (iterative und rekursive Berechnung)
die basis (ba/b) kann beliebig sein und der exponent (ex/e) soll eine natürliche zahl sein
das habe ich ja soweit
bis auf den fehler (kann ihn nicht beheben - weiß nicht wie)
und dann kommt noch dazu, dass wir die wiederholungen bei der iterativen berehnung zählen sollen
und bei der rekursiven sollen wir die funktionsaufrufe zählen
bei der iterativen muss ich das einfach nur in die schleife der funktion iteration einfügen, oder?
also im prinzip:
BEGIN
pot:= pot*b;
wiederholung:= wiederholung+1;
END;
und wie geht das bei der rekursiven?
hier noch mein programm:
PROGRAM sortieren;
USES CRT;
VAR auswahl, nochmal: CHAR;
ba: REAL;
ex: INTEGER;
FUNCTION iteration (b: REAL; e: INTEGER): LONGINT;
VAR pot: LONGINT;
i: INTEGER;
BEGIN
pot:= 1;
FOR i:= 1 TO e DO pot:= pot*b;
iteration:= pot;
END;
FUNCTION rekursion (b: REAL; e: INTEGER): LONGINT;
VAR pot: REAL;
BEGIN
IF e= 1
THEN pot:= b
ELSE pot:= pot (b, e-1)* b;
rekursion:= pot;
END;
BEGIN
WRITELN ('Dieses Programm stellt Iteration und Rekursion gegenüber.');
WRITELN ('Des Weiteren vergleicht es, welches Verfahren schneller ist.');
WRITELN ('Iteration: ');
WRITELN ('Rekursion: ') ;
REPEAT
WRITELN ('Gib eine Basis und einen Exponent ein!');
READLN (ba);
READLN (ex);
REPEAT
WRITELN ('Wähle, ob du mit der iterativen (i) oder rekursiven (r) Berechnung fortfahren willst');
WRITELN ('oder ob du mit neuen Werten beginnen möchtest(e)');
READLN (auswahl);
IF auswahl:= 'i'
THEN WRITELN (iteration (ba, ex))
ELSE IF auswahl:= 'r'
THEN WRITELN (rekursion (ba, ex));
UNTIL auswahl= 'e';
WRITELN ('Möchtest du mit neuen Werten beginnen (j) oder das Programm beenden (n)');
READLN (nochmal);
UNTIL nochmal= 'n';
END.
ich danke euch schon mal für eure mühe
lg lissyssil
lissyssil Gast |