Resolução Alocação
Por: joycesous • 10/8/2015 • Trabalho acadêmico • 2.571 Palavras (11 Páginas) • 271 Visualizações
#include
#include
#include
struct carro
{//Estrutura principal.
char placa[7];
int anoFabricacao;
float valorAproximado;
char modelo[20];
char fabricante[20];
carro *prox;
};
carro* inserirCarro()
{//Função que aloca, recebe os dados e retorna o valor para o main
carro *novo = (carro*)malloc(sizeof(carro));//Alocação de memória
printf("\n Endereco alocado: %p",novo);
printf("\n Digite a placa: ");
fflush(stdin);
gets(novo->placa);
printf("\n Digite o ano de fabricacao: ");
scanf("%i",&novo->anoFabricacao);
printf("\n Digite o valor aproximado: ");
scanf("%f",&novo->valorAproximado);
printf("\n Digite o modelo: ");
fflush(stdin);
gets(novo->modelo);
printf("\n Digite o fabricante: ");
fflush(stdin);
gets(novo->fabricante);
novo->prox = NULL;//O próximo do último é nulo, ou seja, não há.
return(novo);
}
void mostrarCarros(carro * mc)
{//Mostra todos os carros inseridos.
while(mc != NULL)
{
printf("\n -------- ");
printf("\n Placa: %s",mc->placa);
printf("\n Ano de fabricacao: %i",mc->anoFabricacao);
printf("\n Valor aproximado: %.2f",mc->valorAproximado);
printf("\n Modelo: %s",mc->modelo);
printf("\n Fabricante: %s",mc->fabricante);
mc = mc->prox;
}
}
void buscarPelaPlaca(carro *bpp)
{//Função que busca através da placa.
char placa[7];
bool validaPlaca = false;
printf("\n Digite a placa a ser buscada: ");
fflush(stdin);
gets(placa);
while(bpp != NULL)
{//Laço que percorre todos os carros já inseridos.
if((strcmp(placa,bpp->placa))==0)
{
printf("\n Ano de fabricacao: %i",bpp->anoFabricacao);
printf("\n Valor aproximado: %.2f",bpp->valorAproximado);
printf("\n Modelo: %s",bpp->modelo);
printf("\n Fabricante: %s",bpp->fabricante);
validaPlaca = true;
}
bpp = bpp->prox;
}
if(validaPlaca==false)
{
printf("\n Placa nao encontrada.");
}
}
void contarCarros(carro *cc)
{//Função que conta quantos carros estão no pátio.
int contador = 0;
while(cc != NULL)
{//Laço que percorre todos os carros já inseridos.
contador++;
cc = cc->prox;
}
printf("\n Existem %i carros no patio",contador);
}
void mostrarCarroMaiorValor(carro *mcmv)
{//Mostra o carro mais caro.
carro *maiorValor;
maiorValor = mcmv;
while(mcmv != NULL)
{//Laço que percorre todos os carros já inseridos.
if(mcmv->valorAproximado > maiorValor->valorAproximado)
{//Compara os valores para descobrir qual é o maior.
maiorValor = mcmv;
}
mcmv = mcmv->prox;
}
printf("\n Os dados do carro com maior valor sao: ");
printf("\n Placa: %s",maiorValor->placa);
printf("\n Ano de fabricacao: %i",maiorValor->anoFabricacao);
printf("\n Valor aproximado: %.2f",maiorValor->valorAproximado);
printf("\n Modelo: %s",maiorValor->modelo);
printf("\n Fabricante: %s",maiorValor->fabricante);
}
void carrosIsentosDeIPVA(carro *ipva)
{//Mostra todos os carros com mais de 20 anos de fabricação.
int anoAtual;
printf("\n Digite o ano atual: ");
scanf("%i",&anoAtual);
while(ipva != NULL)
{//Laço que percorre todos os carros já inseridos.
if((anoAtual - ipva->anoFabricacao) >= 20)
{
printf(" Carro isento de IPVA");
printf("\n Placa: %s",ipva->placa);
printf("\n Ano de fabricacao: %i",ipva->anoFabricacao);
printf("\n Modelo: %s",ipva->modelo);
}
ipva = ipva->prox;
}
}
void buscarPeloFabricante(carro *bpf)
{//Buscar pelo fabricante.
char fabricante[20];
bool validaFabricante = false;
printf("\n Digite o fabricante a ser buscado: ");
fflush(stdin);
gets(fabricante);
...