Kimossab

Funçã 11 - Categoria Em Que O Estado Mais Arrecada

Dec 27th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.68 KB | None | 0 0
  1. /*
  2.     Item de escolha 11.
  3.     Neste item é executada a opção 11 : categoria em que o estado mais arrecada
  4. */
  5. #include <stdio.h>
  6.  
  7. extern float Imposto(int ano, int cil); //chamada de função exterior a este item
  8.  
  9. void Escolha11()
  10. {
  11.     //variáveis necessárias a esta função
  12.     char matricula[10], marca[15], modelo[25];
  13.     int ano, dono, cod, cilindrada, i=0, ii=0;
  14.     float imposto[6]={0, 0, 0, 0, 0, 0}, max=0; //array de 6 valores, por serem 6 categorias
  15.    
  16.     //variáveis de ficheiros e abertura destes
  17.     FILE *carros; FILE *historico;
  18.     carros = fopen("Carros.txt", "a+");
  19.     historico = fopen("Histórico.txt", "a+");
  20.  
  21.     while(!feof(carros))//pesquisa linha por linha do ficheiro
  22.     {
  23.         //atribuição de valores às variáveis
  24.         fscanf(carros, "%s %s %s %d %d %d %d", matricula, marca, modelo, &ano, &dono, &cod, &cilindrada);
  25.        
  26.         //pesquisa em que categoria está o carro desta linha e aumentar o valor do imposto nessa categoria
  27.         if(cilindrada<1000)
  28.             imposto[0]+=Imposto(ano, cilindrada);
  29.         if(cilindrada>1000 && cilindrada<=1300)
  30.             imposto[1]+=Imposto(ano, cilindrada);
  31.         if(cilindrada>1300 && cilindrada<=1750)
  32.             imposto[2]+=Imposto(ano, cilindrada);
  33.         if(cilindrada>1750 && cilindrada<=2600)
  34.             imposto[3]+=Imposto(ano, cilindrada);
  35.         if(cilindrada>2600 && cilindrada<=3500)
  36.             imposto[4]+=Imposto(ano, cilindrada);
  37.         if(cilindrada>3500)
  38.             imposto[5]+=Imposto(ano, cilindrada);
  39.     }
  40.    
  41.     //pesquisa no array para ver qual o valor mais alto
  42.     max=imposto[0];
  43.     for(i=1; i<6; i++)
  44.         if(imposto[i]>max)
  45.         {
  46.             max=imposto[i];
  47.             ii=i;
  48.         }
  49.    
  50.     switch(ii) //switch de ii, para apresentar o resultado consoante a categoria em que este está
  51.     {
  52.         case 0: printf("A categoria que o Estado mais arrecada e ate 1000 cilindrada com %0.2f Euros\n", max);
  53.             break;
  54.         case 1: printf("A categoria que o Estado mais arrecada e entre 1001 e 1300 cilindrada com %0.2f Euros\n", max);
  55.             break;
  56.         case 2: printf("A categoria que o Estado mais arrecada e entre 1301 e 1750 cilindrada com %0.2f Euros\n", max);
  57.             break;
  58.         case 3: printf("A categoria que o Estado mais arrecada e entre 1751 e 2600 cilindrada com %0.2f Euros\n", max);
  59.             break;
  60.         case 4: printf("A categoria que o Estado mais arrecada e entre 2601 e 3500 cilindrada com %0.2f Euros\n", max);
  61.             break;
  62.         case 5: printf("A categoria que o Estado mais arrecada e mais de 3500 cilindrada com %0.2f Euros\n", max);
  63.             break;
  64.     }
  65.     //fim da dunção
  66.     printf("\n=========================================================\n\n");
  67.    
  68.     //escritura no ficheiro histórico e fechar ficheiros
  69.     fprintf(historico, "Pesquisa pela categoria em que o Estado mais arrecada (%s as %s)\n", __DATE__, __TIME__);
  70.     fclose(carros);
  71.     fclose(historico);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment