Download ex4b.adb
with Ada.Text_Io, Ada.Integer_Text_Io, Ada.Float_Text_Io;
use Ada.Text_Io, Ada.Integer_Text_Io, Ada.Float_Text_Io;
-- Début exercice 4b
procedure Ex4b is
-- Définition de la constante représentant le prix d'une pomme.
Prix_De_Base : Float := 0.20;
-- Définition des variables pour le programme.
Total_Pommes : Natural;
Total_Caisse : Float := 0.0;
Nb_Pommes : Natural;
Prix_Total : Float := 0.0;
-- Trois variables supplémentaires pour la question c
Pommes_Comptees : Natural;
Seuil_Pommes : Natural;
Coefficient : Float;
begin
-- Initialisation du nombre total de pommes.
Put("Combien y-a-t'il de pommes en tout?");
Get( Total_Pommes ); Skip_Line;
-- Début de la vente
while ( Total_Pommes > 0 ) loop
Put("Combien voulez-vous de pommes?");
Get( Nb_Pommes );
Prix_Total := 0.0; -- initialisation
-- Si il n'y a pas assez de pommes on lui donne le reste
if ( Nb_Pommes > Total_Pommes ) then
Put("Je n'ai plus assez de pommes, voilà tout ce qu'il me reste!");
New_Line;
Nb_Pommes := Total_Pommes;
end if;
-- Il y a assez de pommes pour servir le client
-- debut question c
Seuil_Pommes := 10;
Coefficient := 1.0;
Pommes_Comptees := 0;
while ( Pommes_Comptees < Nb_Pommes ) loop
if ( Seuil_Pommes >= Nb_Pommes ) then
Put_Line("Oups");
-- Clacul du prix
Prix_Total := Prix_Total +
(Float(Nb_Pommes-Pommes_Comptees) * Coefficient *
Prix_De_Base );
-- Toutes les pommes ont été comptées
Pommes_Comptees := Nb_Pommes;
else -- Seuil_Pommes > Nb_Pommes
-- Clacul du prix
Prix_Total := Prix_Total +
( Float(Seuil_Pommes-Pommes_Comptees) * Coefficient
* Prix_De_Base );
-- Mise à jour des coefficients et seuil
Pommes_Comptees := Seuil_Pommes;
Seuil_Pommes := Seuil_Pommes * 2;
Coefficient := Coefficient / 2.0;
end if;
Put(Pommes_Comptees);
Put(Seuil_Pommes);Put(" ");
Put(Coefficient);New_LIne;
end loop;
-- fin question c
Put("Cela vous coutera:");
Put(Prix_Total); New_Line;
-- Ajout de l'argent dant la caisse
Total_Caisse := Total_Caisse + Prix_Total;
-- Retrait des pommes de l'étal
Total_Pommes := Total_Pommes - Nb_Pommes;
end loop;
-- Fin de journée
Put("La recette de la journée est :");
Put( Total_Caisse ); New_Line;
end Ex4b;
-- Fin exercice 4b