lucas costa da cruz Posted December 14, 2021 at 02:26 AM Share Posted December 14, 2021 at 02:26 AM 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 preco; }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].preco; ///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].preco); 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].preco); 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); } } Quote Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted December 14, 2021 at 03:24 PM Administrators Share Posted December 14, 2021 at 03:24 PM Opa, tá funcinando o programa? Se não, qual requisito que não tá sendo entendido? Em outras palavras, em qual requisito você precisa de ajuda? ? Abraço! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.