Kimossab

Função 8 - Marca Com Mais Carros

Dec 17th, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.51 KB | None | 0 0
  1. /*
  2.     Item de escolha 8.
  3.     Neste item é executada a opção 8 : Pesquisa por marca com mais carros
  4. */
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. void Escolha8()
  9. {
  10.     //definição de MARCA para criar uma estrutura
  11.     typedef struct Marca
  12.     {
  13.         char marcano[15]; //nome da marca do carro
  14.         int marcanu; //numero de carros encontrados
  15.     }MARCA;
  16.  
  17.     //variáveis do ficheiro e outras necessárias
  18.     char matricula[10], marca[15], modelo[25];
  19.     int ano, dono, cod, cilindrada, i=0, n, aux=0;
  20.     MARCA v[20];
  21.  
  22.     //inicialização das variáveis da estrutura
  23.     for(i=0; i<20; i++)
  24.     {
  25.         v[i].marcanu = 0;
  26.         strcpy(v[i].marcano, "Nada");
  27.     }
  28.  
  29.     //variáveis de ficheiros e abertura destes
  30.     FILE *carros; FILE *historico;
  31.     carros = fopen("Carros.txt", "a+");
  32.     historico = fopen("Histórico.txt", "a+");
  33.  
  34.  
  35.     while(!feof(carros))//pesquisa linha por linha do ficheiro
  36.     {
  37.         //atribuição de valores às variáveis
  38.         fscanf(carros, "%s %s %s %d %d %d %d", matricula, marca, modelo, &ano, &dono, &cod, &cilindrada);
  39.         for(i=0, n=0; i<20, n==0; i++) //ciclo de pesquisa se na estruta existe algum carro com a marca do carro desta linha
  40.         {      
  41.             if(stricmp("Nada", v[i].marcano) == 0) //se ainda nao foi atribuido uma marca a i da estrutura
  42.             {
  43.                 strcpy(v[i].marcano, marca); //atribuir a marca do carro desta linha a i
  44.                 v[i].marcanu++; // aumentar em 1 o numero de carros encontrados
  45.                 n=1; //acabar com o cilco pois já foi adicionado o carro
  46.             }
  47.             else if(strcmp(v[i].marcano, marca) == 0) //caso i já tenha uma marca atribuida e seja a marca do carro desta linha
  48.             {
  49.                 v[i].marcanu++; //aumentar em 1 o numero de carros encontrados
  50.                 n=1; //acabar com o ciclo pois já foi adicionado o carro
  51.             }
  52.         }
  53.     }
  54.  
  55.     //pesquisa pela estrutura qual a marca com mais carros
  56.     n=v[0].marcanu; //seja n o numero de carros da primeira parte da estrutura
  57.     for(i=1; i<20; i++)
  58.         if(v[i].marcanu > n)// verificar se o numero de carros é maior que n
  59.         {
  60.             n=v[i].marcanu; //se for atribuir a n esse numero de carros
  61.             aux = i; //usar a variável auxiliar para saber em que parte da estrutura está a marca com mais carros
  62.         }
  63.  
  64.     //apresentação de resultados e fim da função
  65.     printf("A marca com mais carros e: %s com %d carros.\n", v[aux].marcano, n);
  66.     printf("\n=========================================================\n\n");
  67.    
  68.     //escrever no histórico a função executada e fechar ficheiros
  69.     fprintf(historico, "Procura pela marca com mais carros (%s as %s)\n", __DATE__, __TIME__);
  70.     fclose(carros);
  71.     fclose(historico);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment