Advertisement
Drowze

APC B 04 - Structs 06

Oct 19th, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.46 KB | None | 0 0
  1.  /* Para controle dos veículos que circulam em uma determinada cidade bem
  2.  pequena (mas muito pequena mesmo), a Secretaria dos Transportes criou um
  3. registro-padrão que tem as seguintes informações: proprietário, combustível
  4. (que pode ser álcool,diesel ou gasolina), modelo, cor, número do chassi,
  5. ano e placa (placa possui os 3 primeiros valores alfabéticos e os 4 restantes
  6. valores numéricos). Sabendo que o número máximo de veículos da cidade é de 100
  7. unidades, faça um programa que possibilite gerar os itens a seguir:
  8.  
  9. >> Um procedimento para listar os nomes dos proprietários cujos carros são do ano
  10. de 1980 ou posterior e que sejam movidos à diesel;
  11. >> Um procedimento para listar as placas que comecem com a letra A e terminem
  12. com 0, 2, 4, ou 7 e seus respectivos proprietários;
  13. >> Um procedimento para listar o modelo e a cor dos veículos cujas placas possuem
  14. como segunda letra uma vogal.*/
  15.  
  16. #include <stdio.h>
  17. #include <string.h>
  18.  
  19. #define MAX 2
  20.  
  21. typedef struct {
  22.     char proprietario[50], combustivel[9], modelo[15], cor[15], placa[7];
  23.     int chassi, ano;
  24. } s_carro;
  25.  
  26. //x: carros a registrar. n: carros já registrados. lista_carros: lista de carros
  27. //Retorna: quantidade de carros já registrados
  28. int registro_carros(int x, int n, s_carro lista_carros[]);
  29.  
  30. //listando proprietarios de carros do ano >1980 movidos a diesel
  31. void movidos_diesel_pos1980(int n, s_carro lista_carros[]);
  32.  
  33. //listando proprietarios de placas Axx-xx0, Axx-xx2, Axx-xx4, Axx-xx7
  34. void placas_especificas(int n, s_carro lista_carros[]);
  35.  
  36. //listando modelo+cor dos carros com placas xAx-xxx, xEx-xxx, xIx-xxx, xOx-xxx, xUx-xxx
  37. void placas_vogais(int n, s_carro lista_carros[]);
  38.  
  39. int main(void){
  40.     s_carro lista_carros[MAX];
  41.     int qtd, qtd_registros=0;
  42.  
  43.     printf("Gerenciador de carros da Cidade Pequena\n");
  44.    
  45.     printf("Deseja registrar quantos carros? ");
  46.     scanf("%d", &qtd);
  47.     qtd_registros = registro_carros(qtd, qtd_registros, lista_carros);
  48.     printf("%d carros registrados\n\n", qtd_registros);
  49.  
  50.     printf("Listando proprietarios de carros movidos a diesel de 1980+ :\n");
  51.     movidos_diesel_pos1980(qtd_registros, lista_carros);
  52.  
  53.     printf("Listando todos os proprietarios de placas que comecam com A e terminam com 0,2,4,7: \n");
  54.     placas_especificas(qtd_registros, lista_carros);
  55.  
  56.     printf("Listando todos os proprietarios de placas que têm vogais no segundo digito: \n");
  57.     placas_vogais(qtd_registros, lista_carros);
  58.  
  59.  
  60.     fflush(stdin);
  61.     getchar();
  62. }
  63.  
  64. int registro_carros(int x, int n, s_carro lista_carros[]){
  65.     printf("\n |-------| Registro de carros |--------| \n");
  66.     int i;
  67.    
  68.     for(i = n; i < x; i++){
  69.         printf("Registro %d (%d carros ja registrados)\n",i+1, n);
  70.         fflush(stdin);
  71.         printf("Placa (3 numeros e 3 letras, sem espacos): ");
  72.         gets(lista_carros[i].placa);
  73.  
  74.         printf("Numero do Chassi: ");
  75.         scanf("%d", &lista_carros[i].chassi);
  76.  
  77.         fflush(stdin);
  78.         printf("Proprietario: ");
  79.         gets(lista_carros[i].proprietario);
  80.  
  81.         fflush(stdin);
  82.         printf("Modelo: ");
  83.         gets(lista_carros[i].modelo);
  84.  
  85.         printf("Ano: ");
  86.         scanf("%d", &lista_carros[i].ano);
  87.  
  88.         fflush(stdin);
  89.         printf("Combustivel (gasolina/alcool/diesel): ");
  90.         gets(lista_carros[i].combustivel);
  91.  
  92.         fflush(stdin);
  93.         printf("Cor: ");
  94.         gets(lista_carros[i].cor);
  95.     }
  96.     printf("\nRegistro concluido\n");
  97.  
  98.     return i+1;
  99. }
  100.  
  101. void movidos_diesel_pos1980(int n, s_carro lista_carros[]){
  102.     for(int i = 0; i < n; i++){
  103.         if(strcmp(lista_carros[i].combustivel, diesel)==0 && lista_carros[i].ano >= 1980){
  104.             printf("%s\n",lista_carros[i].nome);
  105.         }
  106.     }
  107. }
  108.  
  109. void placas_especificas(int n, s_carro lista_carros[]){
  110.     for(int i=0; i<n; i++){
  111.         if(
  112.             (lista_carros[i].placa[0] == 'a' || lista_carros[i].placa[0] == 'A') &&
  113.             (lista_carros[i].placa[5] == '0' ||
  114.             lista_carros[i].placa[5] == '2' ||
  115.             lista_carros[i].placa[5] == '4' ||
  116.             lista_carros[i].placa[5] == '7')
  117.             )
  118.             printf("%s\n",lista_carros[i].proprietario);
  119.     }
  120. }
  121.  
  122. void placas_vogais(int n, s_carro lista_carros[]){
  123.     for(int i=0; i<n; i++){
  124.         if(
  125.             (lista_carros[i].placa[1] == 'a' || lista_carros[i].placa[1] == 'A') ||
  126.             (lista_carros[i].placa[1] == 'e' || lista_carros[i].placa[1] == 'E') ||
  127.             (lista_carros[i].placa[1] == 'i' || lista_carros[i].placa[1] == 'I') ||
  128.             (lista_carros[i].placa[1] == 'o' || lista_carros[i].placa[1] == 'O') ||
  129.             (lista_carros[i].placa[1] == 'u' || lista_carros[i].placa[1] == 'U')
  130.             )
  131.             printf("Modelo: %s | Cor: %s \n", lista_carros[i].modelo, lista_carros[i].cor);
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement