Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with Ada.Text_IO; use Ada.Text_IO;
- with Ada.Float_Text_IO; use Ada.Float_Text_IO;
- --Uppgift: Skriv en funktion som beräknar X upphöjt till N
- --Lös med rekursion
- --Vill bara tillägga att denna lösningen inte är perfekt
- --exponenten fungerar endast som heltal och avrundar alltid till en decimal.
- --de som är bättre än mig på ada kanske har någon lösning på det :)
- procedure Exponenter is
- function The_Power_Of(X,N: in float) return float is
- begin
- if N = 0.0 then
- return 1.0;
- elsif N = 1.0 then
- return X;
- end if;
- --dessa två är de "enkla fallen" som alltid stämmer oavsett vilka siffror som matas in.
- if N < 0.0 then
- return 1.0/The_Power_Of(X,-N);
- --I de fallen exponenten (N) är negativ måste vi använda en annan formel
- --annars blir rekursionen oändlig
- end if;
- return X*The_Power_Of(X,(N-1.0));
- --I de fallen N är positivt hamnar vi här
- end The_Power_Of;
- X,N: float;
- begin
- Put("Mata in basen X: ");
- Get(X);
- Put("Mata in exponenten N: ");
- Get(N);
- Put("X upphöjt till N är: ");
- Put(The_Power_Of(X,N),Fore=>0,Aft=>0,Exp=>0);
- end Exponenter;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement