Guest User

Untitled

a guest
Jan 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. // exo 3 :
  2. /* écrire une fonction reproVision qui retourne le prix d'une commande par le magasin reproVision.
  3. Pour ce magasin, les tarifs sont évalués par paquet, ils sont les suivants pour les photocopies noir et blanc :
  4.  
  5. 50 = 40.5 euros
  6. 100 = 75 euros
  7. 200 = 135 euros
  8. 500 = 280 euros
  9. Les photocopies couleur comptent pour deux photocopies noir et blanc.
  10. On ne peut que commander des multiples de 50.
  11. Par exemple :
  12. Pour 50 photocopies noir et blanc et 10 couleurs, on payera 50 + 10*2 = 70 photocopies donc 75 euros.
  13. Pour 430 phocopies, on payera 2*200 + 1*50.
  14. */
  15.  
  16. // ATTENTION CORRECTION
  17.  
  18. float reproVision(int nb, int c) // nb = nombre de photocopies noir et blanc, c = nombre de couleur
  19. {
  20.     int r;
  21.     float prix=0;
  22.     r=nb+c*2; //calcul du total des photocopies
  23.     if(r%50!=0)
  24.         r=(r+50)-(r%50);
  25.     prix=prix+(r/500)*280;
  26.     r=r%500;
  27.     prix=prix+(r/200)*135;
  28.     r=r%200;
  29.     prix=prix+(r/100)*75;
  30.     r=r%100;
  31.     r=prix+(r/50)*40.5;
  32.     return prix
  33. }
  34.  
  35. /* 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.
  36. Perso j'ai pu trouver ça : r=((r/50)*50)+50*(int((r%50/50.00)+0.99)
  37. Concrétement : (r/50)*50 donne l'entier arrondi à l'inférieur de 50 (430 devient 400)
  38.         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.
  39.         on lui rajoute 0.99, il devient donc ou 0.99, ou entre 1.01 et quasiment 2.
  40.         Puis on garde uniquement la partie entiére avec le int()
  41.         On ajoute donc une fois 50 si r%50 vaut autre chose que 0, rien sinon.
  42. Il y a peut-être moyen de faire plus simple.
  43. */
Add Comment
Please, Sign In to add comment