Advertisement
FoxTuGa

XanaProg.c

Jan 29th, 2012
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TRUE 1
  5.  
  6. struct tagCar {
  7.     int cilindrada;
  8.     int co2lvl;
  9.     int age;
  10.     float imp;
  11. };
  12.  
  13. int Valid(int num, int inf, int sup);
  14. float ImpostoCilindrada(int cm);
  15. float ImpostoCo2(int co2);
  16. float Discount(int age, float imp);
  17. void ShowFinal(struct tagCar car);
  18.  
  19. int main()
  20. {
  21.     struct tagCar car;
  22.     int cmaux, ageaux, co2aux;
  23.     float disc;
  24.     disc = 0,0;
  25.     car.imp = 0;   
  26.     cmaux = ageaux = co2aux = 0;
  27.  
  28.  
  29.     printf("Indique a Cilindrada: ");
  30.     scanf("%d", &cmaux);
  31.     printf("Indique a Idade: ");
  32.     scanf("%d", &ageaux);
  33.     printf("Indique a quantidade de CO2: ");
  34.     scanf("%d", &co2aux);
  35.  
  36.     if( Valid(cmaux, 0, -1) && Valid(ageaux, 0, -1) && Valid(co2aux, 0, -1) ) {
  37.         system("cls");
  38.  
  39.         car.age = ageaux;
  40.         car.cilindrada = cmaux;
  41.         car.co2lvl = co2aux;
  42.  
  43.         car.imp = ImpostoCilindrada(car.cilindrada);
  44.         car.imp += ImpostoCo2(car.co2lvl);
  45.         disc = Discount(car.age, car.imp);
  46.         car.imp -= disc;
  47.  
  48.         ShowFinal(car);
  49.     }
  50.  
  51.     return 0;
  52. }
  53.  
  54. int Valid(int num, int inf, int sup) {
  55.     int aux;
  56.     if( sup == -1 )
  57.         return (num >= inf) ? 1:0;
  58.  
  59.     return (num >= inf && num <= sup) ? 1:0;
  60. }
  61.  
  62. float ImpostoCilindrada(int cm) {
  63.     float imp, aux;
  64.     imp = 670,00;
  65.  
  66.     if( cm > 1250 && cm < 12250) {
  67.         aux = cm - 1250;
  68.         aux *= 4,25;
  69.         imp += aux;
  70.     }
  71.     else    if( cm >= 12250 ) {
  72.         aux = 12250 - 1250;
  73.         aux *= 0,90;
  74.         imp += aux;
  75.     }
  76.  
  77.     return imp;
  78. }
  79. float ImpostoCo2(int co2) {
  80.     float imp;
  81.     imp = 0,00;
  82.  
  83.     if( co2 <= 105 ) {
  84.         imp = (float) co2*15,00;
  85.         imp -= 1100,00;
  86.     }
  87.     else    if( co2 <= 130 ) {
  88.         imp = (float) co2*55,00;
  89.         imp -= 5300,00;
  90.     }
  91.     else    if( co2 <= 150 ) {
  92.         imp = (float) co2*105,00;
  93.         imp -= 11800,00;
  94.     }
  95.     else {
  96.         imp = (float) co2*122,00;
  97.         imp -= 14350,00;
  98.     }
  99.  
  100.     return (imp > 0) ? imp:0;
  101. }
  102. float Discount(int age, float imp) {
  103.     float disc;
  104.  
  105.     if( age <= 1 )
  106.         disc = (imp * 10) / 100;
  107.     else    if( age <= 2 )
  108.         disc = (imp * 20) / 100;
  109.     else    if( age <= 3 )
  110.         disc = (imp * 28) / 100;
  111.     else    if( age <= 4 )
  112.         disc = (imp * 35) / 100;
  113.     else    if( age <= 5 )
  114.         disc = (imp * 43) / 100;
  115.     else    if( age <= 6 )
  116.         disc = (imp * 52) / 100;
  117.     else    if( age <= 7 )
  118.         disc = (imp * 60) / 100;
  119.     else    if( age <= 8 )
  120.         disc = (imp * 65) / 100;
  121.     else    if( age <= 9 )
  122.         disc = (imp * 70) / 100;
  123.     else
  124.         disc = (imp * 75) / 100;
  125.  
  126.     return disc;
  127. }
  128. void ShowFinal(struct tagCar car) {
  129.     printf("\n\t[Carro]\n");
  130.     printf("\n\t\tCilindrada: %d", car.cilindrada);
  131.     printf("\n\t\tNivel CO2: %d", car.co2lvl);
  132.     printf("\n\t\tIdade: %d", car.age);
  133.     printf("\n\n\t\t\tTaxas a pagar: %f\n\n\n", car.imp);
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement