Tom's Guide > Forum > Programmation > opération arithmétique

opération arithmétique

Forum Programmation : opération arithmétique

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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?

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

C'est un peu hors sujet mais c'est quoi comme language ?

Répondre à SiM07

@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.

Répondre à Agent00

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?

Répondre à delphe411

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

Code :
  1. with ada.text_io; use ada.text_io;
  2. with ada.integer_text_io; use ada.integer_text_io;
  3. procedure Main is
  4.   type T_Valeurs is array (0..8) of integer;
  5.   Somme,Reste : integer;
  6.   Valeurs : T_Valeurs := (500,200,100,50,20,10,5,2,1);
  7. begin
  8.   put("Quel est le prix?" );
  9.   get(Somme);
  10.   for i in 0..8 loop
  11.       put(Valeurs(i));
  12.       put(": " );
  13.       put(Somme / Valeurs(i));
  14.       Somme := Somme mod Valeurs(i);
  15.   end loop;
  16. end Main;

Répondre à Agent00

Y a t il un moyen d'écrire ce programmme sans untiliser de tableau?

Répondre à delphe411
Tom's Guide > Forum > Programmation > opération arithmétique
Aller à :

Il y a 708 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens