Desciption: Le programme que je fais dans Ada 95 est supposé sortir une liste de taxes en fonction de l'entrée de l'utilisateur comme ci-dessous:Ada 95 - while-loop inside Le sous-programme donne la sortie *** inf ***
Prix sans taxes | Taxe | Prix avec les taxes
Si l'entrée utilisateur Premier prix: 10, Dernière Tarif: 20, étapes: 0,5 et impôt en entier. Le programme passe ensuite de 10 à 20 avec des pas de 0,5 avant de s'arrêter.
Le problème auquel je fais face est la sortie de la valeur de "Tax" et "Prix avec les taxes". Le résultat que je reçois est **** inf **** sur les deux colonnes. Je n'ai aucune idée de ce que cela signifie réellement, et je ne peux trouver aucune autre information à ce sujet. J'ai donc fait une autre tentative et obtenu le résultat que je voulais sauf la première ligne à l'intérieur de l'itération. Il a commencé avec la valeur 10 Taxes = 0 et le dernier Pris avec taxes = 0, mais toutes les autres colonnes et lignes étaient correctes.
N'est-ce pas supposé fonctionner de la même manière avec les sous-programmes comme c'est le cas avec les boucles comme dans le Main? J'ai exactement le même programme dans un autre fichier, la différence est que tout est dans le Main et pas dans un sous-programme comme celui-ci.
Quelqu'un d'autre a-t-il déjà vécu cela et sait comment le résoudre?
-------- Code ------------------------------------- -----------------
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
procedure Momstabell is
-- First Price, Last Price, Steps & Taxes(in Integer),- Subprogram
procedure Hamta(S : in String;
Tal : out Float) is
begin
Put(S);
loop
Get(Tal);
exit when Tal > 0.0;
end loop;
end Hamta;
procedure Skriv_Ut(Forsta_Pris, Sista_Pris, Steg, Momsprocent : in
Float) is
First_Price, Last_Price, Steps, Price_With_Tax, Tax_Percentage, Tax :
Float;
begin
New_Line;
Put("=== Price List ===");New_Line;
Put("Price without tax ");
Put("Tax ");
Put("Price with tax");
-- Local Variables --
First_Price := Forsta_Pris;
Last_Price := Sista_Pris;
Steps := Steg;
Tax_Percentage := Momsprocent;
Tax := Tax_percentage/First_Price;
Price_With_Tax := First_Price + Tax;
while First_Price <= Last_Price loop
New_Line;
Put(" ");
Put(First_Price, Aft => 2, Exp => 0);
Put(" ");
Put(Tax, Aft => 2, Exp => 0);
Put(" ");
Put(Price_With_Tax, Aft => 2, Exp => 0);
-- Iteration --
First_Price := First_Price + Steps;
Tax := First_Price/Tax_Percentage;
Price_With_Tax := First_Price + Tax;
end loop;
end Skriv_Ut;
-- Deklaration of Variables
Forsta_Pris: Float;
Sista_Pris: Float;
Steg: Float;
Momsprocent: Float;
Moms : Float;
begin
Hamta("Mata in första pris: ",Forsta_Pris);
Hamta("Mata in sista pris: ", Sista_Pris);
Hamta("Mata in Steg: ",Steg);
Hamta("Mata in Momsprocent: ",Moms);
Skriv_Ut(Forsta_Pris, Sista_Pris, Steg, Momsprocent);
end Momstabell;
Meilleures salutations Robert
instantané du code serait très utile pour obtenir des réponses raisonnables. – kaza
Copier/coller préférable à l'instantané. Codepen/JsFiddle préférable de copier/coller :) – admcfajn
Votre question concerne Ada, donc copier/coller. Pas de Javascript, donc pas de JsFiddle, et probablement pas de Codepen non plus. –