boa noite fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor
Faça um programa em C que leia do teclado informações de 10 carros. Os dados a serem lidos são: marca, ano e preço.
• Crie quatro funções que façam o seguinte:
1ª) Ordenação crescente do vetor pelo campo ano (ordenação Quick);
2ª) Retorne um valor float, que será a média geral do preço dos carros (somar os preços de todos os carros / total de carros);
3ª) Busca binária pelo campo ano, que deverá ser passado por parâmetro. Caso seja encontrado, a função deverá retornar um valor inteiro, que será a posição do vetor que se encontra este carro, caso não exista, a função deverá retornar um valor inteiro igual a -1.
• Crie um vetor com 10 posições de struct.
• Os campos do struct serão: marca, ano e preço.
• Preencha o vetor.
• O parâmetro a ser passado para as três funções deverão ser por referência (use o *) e por valor.
• Chame a função de ordenação.
• Exiba o vetor ordenado.
• Chame as outras duas funções exibindo a média dos preços dos carros e a posição do vetor onde está armazenado o carro fabricado em um ano específico, ou o valor -1, caso não encontre.
Pergunta
lucas costa da cruz
boa noite fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor
Faça um programa em C que leia do teclado informações de 10 carros. Os dados a serem lidos são: marca, ano e preço.
• Crie quatro funções que façam o seguinte:
1ª) Ordenação crescente do vetor pelo campo ano (ordenação Quick);
2ª) Retorne um valor float, que será a média geral do preço dos carros (somar os preços de todos os carros / total de carros);
3ª) Busca binária pelo campo ano, que deverá ser passado por parâmetro. Caso seja encontrado, a função deverá retornar um valor inteiro, que será a posição do vetor que se encontra este carro, caso não exista, a função deverá retornar um valor inteiro igual a -1.
• Crie um vetor com 10 posições de struct.
• Os campos do struct serão: marca, ano e preço.
• Preencha o vetor.
• O parâmetro a ser passado para as três funções deverão ser por referência (use o *) e por valor.
• Chame a função de ordenação.
• Exiba o vetor ordenado.
• Chame as outras duas funções exibindo a média dos preços dos carros e a posição do vetor onde está armazenado o carro fabricado em um ano específico, ou o valor -1, caso não encontre.
#include<stdio.h>
#include<stdlib.h>
#include <locale.h>
#define N 10
typedef struct carro
{
char marca[50];
int ano;
float preço;
}Carro;
/////funçoes do ordençao//////////
int dividir(Carro vetor[],int esq,int dir)
{
int cont=esq;
Carro aux;
for(int i=esq+1; i < dir+1;i++)
{
if (vetor[i].ano < vetor[esq].ano)
{
cont++;
aux=vetor[i];
vetor[i] = vetor[cont];
vetor[cont]= aux;
}
}
aux = vetor[esq];
vetor[esq]=vetor[cont];
vetor[cont]=aux;
return cont;
}
//////funçao de ordenação
void quick(Carro *vetor,int esq,int dir)
{
int pos;
if(esq < dir)
{
pos=dividir(vetor,esq,dir);
quick(vetor,esq,pos-1);
quick(vetor,pos+1,dir);
}
}
///////faz uma pesquisa binaria
int Busca_Binaria(Carro *vetor,int ano,int inicio,int fim)
{
int meio;
if(inicio<=fim)
{
meio=(inicio+fim)/2;
if(ano==vetor[meio].ano)return meio;
else
{
if(ano < vetor[meio].ano)
return Busca_Binaria(vetor,ano,inicio,meio-1);
else
return Busca_Binaria(vetor,ano,meio+1,fim);
}
}
return -1;
}
//////calcula media //////
float MediaPreco(Carro *vetor,int tam)
{ float soma=0;
for(int i=0;i < tam;i++)
{
soma+=vetor[i].preço; ///soma o preço de todos os veiculos
}
return soma/N; ////retorna o total dividido pelo numero de veiculos
}
////////lista os veiculos da lista///////
void Listar_Veiculos(Carro *vetor,int tam)
{
for(int i=0;i < tam;i++)
{
printf("%dº Veiculo:\n",i+1);
printf(".........................\n");
printf("marca: %s\n",vetor[i].marca);
printf("ano: %d\n",vetor[i].ano);
printf("preço: R$%.2f\n",vetor[i].preço);
printf(".........................\n\n\n");
}
}
void main()
{ setlocale(LC_ALL, "portuguese");
Carro Carros[N];
int busca_ano;
char decisao;
int Retorno_funcao;////irá receber o retorno da funçao de pesquisa
printf("cadastre %d veiculos\n\n",N);
for(int i =0;i<N;i++)
{ printf("digite a marca do %dº carro:\n",i+1);
scanf("%s",Carros[i].marca);
system("cls");
printf("digite o ano do %dº carro:\n",i+1);
scanf("%d",&Carros[i].ano);
system("cls");
printf("digite o valor do %dº carro:\n",i+1);
scanf("%f",&Carros[i].preço);
system("cls");
}
quick(Carros,0,N-1);
Listar_Veiculos(Carros,N);
printf("a média dos preços dos veiculos é de R$%.2f\n\n\n",MediaPreco(Carros,N));
printf("\deseja pesquizar um veiculo? digite'S'para 'Sim'\n");
scanf("%s",&decisao);
if (decisao=='s'||decisao=='S')
{ printf("digite o ano do veiculo\n");
scanf("%d",&busca_ano);
Retorno_funcao = Busca_Binaria(Carros,busca_ano,0,N);
if (Retorno_funcao ==-1) printf("veiculo não encontrado\n\n");
else printf("veiculo encontrado na posiçao %d\n\n",Retorno_funcao);
}
}
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.