• Source
    1. With Ada.Text_IO, Ada.Float_Text_IO, Ada.Integer_Text_IO;
    2. Use Ada.Text_IO, Ada.Float_Text_IO, Ada.Integer_Text_IO;
    3.  
    4. procedure Momstabell is
    5.  
    6. Fpris, Spris, Steg, Moms : Float;
    7. PrisuMoms, PrismMoms : Float;
    8. N : Integer := 0;
    9. M : Float := 0.0;
    10. MomsUt : Float;
    11.  
    12.  
    13. begin
    14. loop
    15. Put("Första Pris: ");
    16. Get(Fpris);
    17. exit when Fpris > 0.0;
    18. end loop;
    19.  
    20. loop
    21. Put("Sista Pris: ");
    22. Get(Spris);
    23. exit when Spris >= Fpris;
    24. end loop;
    25.  
    26. loop
    27. Put("Steg: ");
    28. Get(Steg);
    29. exit when Steg > 0.0;
    30. end loop;
    31.  
    32. loop
    33. Put("Momsprocent: ");
    34. Get(Moms);
    35. exit when Moms > 0.0;
    36. end loop;
    37. Moms := Moms/100.0;
    38. New_Line;
    39. New_Line;
    40.  
    41.  
    42. Put_Line("==== Momstabell =====");
    43. Put("Pris utan moms Moms Pris med moms");
    44. New_Line;
    45.  
    46. M := Spris - Fpris;
    47. M := M / Steg;
    48. N := Integer(Float 'Rounding(M));
    49. for I in 1..N loop
    50. PrisuMoms := Fpris;
    51. Prisumoms := PrisuMoms + N * Steg;
    52. exit when PrisuMoms > Spris;
    53. MomsUt := PrisuMoms * Moms;
    54. PrismMoms := PrisuMoms + Moms;
    55.  
    56. N := N + 1.0;
    57. Put(PrisuMoms, Fore => 7, Aft => 2, Exp => 0);
    58. Put(MomsUt, Fore => 9, Aft => 2, Exp => 0);
    59. Put(PrismMoms, Fore => 12, Aft => 2, Exp => 0);
    60. New_Line;
    61. end loop;
    62.  
    63.  
    64. end Momstabell;
    65.