Se connecter avec
S'enregistrer | Connectez-vous

opération arithmétique

Dernière réponse : dans Programmation

Il me faut écrire un programme qui calcule le nbr minimum de billets et de pièces de monnaye nécessaires pour décomposer une somme d'argent donnée par l'utilisateur du programme.

Voilà ce que j'ai fait mais ça me parait un peu trop long :

with ada.text_io, ada.integer_text_io;
s,n : integer;
ada.text_io.put("Qu'elle est le prix?"); ada.integer_text_io.get(s);
-- Calcul du nombre de billets de 500
n:=0;
while s > 500 loop
s:=s-500;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de billets de 500 =");ada.integer_text_io.put(n);
-- Calcul du nombre de billets de 200
n:=0;
while s > 200 loop
s:=s-200;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de billets de 200 =");ada.integer_text_io.put(n);
-- Calcul du nombre de billets de 100
n:=0;
while s > 100 loop
s:=s-100;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de billet de 100 =");ada.integer_text_io.put(n);
-- Calcul du nombre de billets de 50
n:=0;
while s > 50 loop
s:=s-50;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de billet de 50 =");ada.integer_text_io.put(n);
-- Calcul du nombre de billets de 20
n:=0;
while s > 20 loop
s:=s-20;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de billets de 20 =");ada.integer_text_io.put(n);
-- Calcul du nombre de pièces de 10
n:=0;
while s > 10 loop
s:=s-10;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de pièce de 10 =");ada.integer_text_io.put(n);
-- Calcul du nombre de pièces de 5
n:=0;
while s > 5 loop
s:=s-5;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de pièce de 5 =");ada.integer_text_io.put(n);
-- Calcul du nombre de pièces de 2
n:=0;
while s > 2 loop
s:=s-2;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de pièces de 2 =");ada.integer_text_io.put(n);
-- Calcul du nombre de pièces de 1
n:=0;
while s > 1 loop
s:=s-1;
n:=n+1;
end loop;
ada.text_io.new_line;
ada.text_io.put("Nombre de pièce de 1 =");ada.integer_text_io.put(n);


Qu'en pensez vous?

Autres pages sur : operation arithmetique

Lassé par la pub ? Créez un compte

@SiM07 : c'est de l' Ada.

@delphe411 :
pour ton programme ca fonctionne en effet mais j'ai l'impression que tu ne te penche pas tellement sur la façon dont tu va programmer ton programme. Il vaut mieux réfléchir un peu plus et coder en moin de lignes pour faire la même chose. Déjà ca évite les erreurs et ensuite ca épargne les doigts ;-)

bref, pense a utiliser le modulo pour ton programme (reste de la division) et la division.

13 / 3 = 4
4 mod 3 = 1

donc

somme / 500 = nombre de billet de 500
somme mod 500 = somme restant a décomposer.

et il ne te reste plus qu'a faire ca pour le nombre de billets et de pièces existantes.

j'ai essayer d'arranger mon programme grace à tes indications :


with ada.text_io, ada.integer_text_io;
s,n,i,valeur : integer;
begin
ada.text_io.put("Quel est le prix?"); ada.integer_text_io.get(s);
valeur : array(0..8) of integer:=(500,200,100,50,20,10,5,2,1);
for i in 0..8 loop
n:=0;
while s>=valeur(i) loop
s:=s-valeur(i);
n:=n+1;
end loop;
if valeur(i)>=5 then
ada.text_io.put("nombre de billets de");
else
ada.text_io.put("nombre de pièces de");
end if;
ada.integer_text_io.put(valeur(i)); ada.text_io.put("=");
ada.integer_text_io.put(n);
ada.text_io.new_line;
end loop;
end;

Est il correct?

on ne peux pas dire que ce soit vraiment évident a corriger.
si tu veux faire de la programmation il faudrait que tu change ta méthode de programmation, il y a certaines choses qui peuvent faciliter grandement la lecture/relecture et la mise-à-jour d'un programme et qui ne demande pas plus d'efforts lors de la création de ton programme.
Donc, pense à indenter ton code et à donner des nom significatifs à tes variables.

par exemple
  1. with ada.text_io; use ada.text_io;
  2. with ada.integer_text_io; use ada.integer_text_io;
  3.  
  4. procedure Main is
  5.  
  6. type T_Valeurs is array (0..8) of integer;
  7.  
  8. Somme,Reste : integer;
  9. Valeurs : T_Valeurs := (500,200,100,50,20,10,5,2,1);
  10.  
  11. begin
  12. put("Quel est le prix?");
  13. get(Somme);
  14.  
  15. for i in 0..8 loop
  16. put(Valeurs(i));
  17. put(": ");
  18. put(Somme / Valeurs(i));
  19. Somme := Somme mod Valeurs(i);
  20. end loop;
  21.  
  22. end Main;
Lassé par la pub ? Créez un compte
Tom's guide dans le monde