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