unit LibreriaDiMatematica; ///////////////////////////////////////////////////////////////////////////// interface procedure EquazionePrimoGrado(a,b: real); procedure EquazioneSecondoGrado(a,b,c: real); function Fattoriale(num: integer): integer; function CoefficienteBinomiale(n, k: integer): real; function Log(x: real): real; ///////////////////////////////////////////////////////////////////////////// implementation ///////////////////////////////////////////////////////////////////////////// // EquazionePrimoGrado procedure EquazionePrimoGrado(a,b: real); begin if (a=0) and (b=0) then Writeln ('L''equazione e'' indeterminata'); else if (a=0) and (b<>0) then Writeln ('L''equazione e'' impossibile'); else Writeln ('La soluzione e'': ', -b/a:2:2); end; ///////////////////////////////////////////////////////////////////////////// // CalcolaDelta function CalcolaDelta(a,b,c: real): real; begin result := b*b - 4*a*c; end; ///////////////////////////////////////////////////////////////////////////// // EquazioneSecondoGrado procedure EquazioneSecondoGrado(a,b,c: real); var delta, x1, x2: real; begin if (a = 0) then EquazionePrimoGrado(b,c) else begin delta := CalcolaDelta (a,b,c); if (delta<0) then Writeln('Non esistono soluzioni') else begin x1 := (-b - sqrt(delta)) / (2*a); x2 := (-b + sqrt(delta)) / (2*a); Writeln ('La prima soluzione e'': ', x1:2:2); Writeln ('La seconda soluzione e'': ', x2:2:2); end; end; end; ///////////////////////////////////////////////////////////////////////////// // Fattoriale function Fattoriale(num: integer): integer; var i: integer; begin result := 1; for i := 1 to num do result := result * i; end; ///////////////////////////////////////////////////////////////////////////// // CoefficienteBinomiale function CoefficienteBinomiale(n, k: integer): real; var a, b, c: integer; begin a := Fattoriale (n); b := Fattoriale (k); c := Fattoriale (n-k); result := a/(b*c); end; ///////////////////////////////////////////////////////////////////////////// // Log function Log(x: real): real; begin result := ln(x)/ln(2); end; end.