Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // exo 3 :
- /* écrire une fonction reproVision qui retourne le prix d'une commande par le magasin reproVision.
- Pour ce magasin, les tarifs sont évalués par paquet, ils sont les suivants pour les photocopies noir et blanc :
- 50 = 40.5 euros
- 100 = 75 euros
- 200 = 135 euros
- 500 = 280 euros
- Les photocopies couleur comptent pour deux photocopies noir et blanc.
- On ne peut que commander des multiples de 50.
- Par exemple :
- Pour 50 photocopies noir et blanc et 10 couleurs, on payera 50 + 10*2 = 70 photocopies donc 75 euros.
- Pour 430 phocopies, on payera 2*200 + 1*50.
- */
- // ATTENTION CORRECTION
- float reproVision(int nb, int c) // nb = nombre de photocopies noir et blanc, c = nombre de couleur
- {
- int r;
- float prix=0;
- r=nb+c*2; //calcul du total des photocopies
- if(r%50!=0)
- r=(r+50)-(r%50);
- prix=prix+(r/500)*280;
- r=r%500;
- prix=prix+(r/200)*135;
- r=r%200;
- prix=prix+(r/100)*75;
- r=r%100;
- r=prix+(r/50)*40.5;
- return prix
- }
- /* Pour l'arrondi à 50 prés, on peut utiliser une formule similaire à celle de l'arrondi pour l'entier, le if est bien plus simple à écrire.
- Perso j'ai pu trouver ça : r=((r/50)*50)+50*(int((r%50/50.00)+0.99)
- Concrétement : (r/50)*50 donne l'entier arrondi à l'inférieur de 50 (430 devient 400)
- r%50/50.00 donne 0 si r%50 vaut 0, sinon il donne 0.02 au minimum, une valeur proche de un au maximum.
- on lui rajoute 0.99, il devient donc ou 0.99, ou entre 1.01 et quasiment 2.
- Puis on garde uniquement la partie entiére avec le int()
- On ajoute donc une fois 50 si r%50 vaut autre chose que 0, rien sinon.
- Il y a peut-être moyen de faire plus simple.
- */
Add Comment
Please, Sign In to add comment