Guest Noly Postado Abril 10, 2004 Denunciar Share Postado Abril 10, 2004 /*3. Uma empresa transportadora está necessitando realizar uma estatística do consumo de seus veículos por viagem. Para tanto fornecerá, para cada viagem, a identificação do veículo e o consumo por quilômetro. Fazer um programa que, através de um menu simples, possibilite o cadastramento dos dados de uma viagem ou a impressão do consumo mínimo e máximo de todos os veículos cadastrados até o momento. Os consumos mínimo e máximo deverão ser obtidos por uma única função, que não pode ler e nem escrever nenhum dado. Os valores obtidos pela função deverão ser impressos pelo programa principal. Usar matriz de estruturas na solução do problema, alocando-a dinamicamente na medida da necessidade. A memória necessária para guardar a identificação dos veículos deverá ser alocada dinamicamente. Desalocar toda a memória alocada após o seu uso.*/#include <stdio.h>#include <stdlib.h>#include <conio.c>#include <ctype.h>struct veiculo{int id;float consumo;};void cadastra(struct veiculo *v,int n);void verifica(struct veiculo *v,int n,float *ma,float *me);main(void){struct veiculo *v;int n=0,mav,mev;char R;float ma,me;ma=me=0;do{clrscr();printf(" Maior: %f Menor: %f ",ma,me);printf("\nC - Cadastrar veículo\nI - Imprime maior e menor consumo\nE - Encerra o programa\n");R=(char)toupper(getche());switch ®{ case 'C': v=(struct veiculo *)realloc(v,n*sizeof(struct veiculo)); if (v==NULL) { printf("\nErro de alocação"); getch(); break; } cadastra(v,n); n++; break; case 'I': verifica(v,n,ma,me); break; case 'E': printf("\n\n\n Fim do Programa!!!"); getch(); break; default: printf("\nOpção Inválida "); break;} n++;}while(R!='E');printf("\nMaior consumo: %.2f Menor consumo: %.2f",ma,me);getch();free(v);}void cadastra(struct veiculo *v,int n){clrscr();printf("\n Veiculo: ");scanf("%d",&v[n].id);printf("\n Consumo: ");scanf("%f",&v[n].consumo);}void verifica(struct veiculo *v,int n,float *ma,float *me){int i;for (i=0;i<n;i++) { if (v.consumo>=ma) { ma=v[n].consumo; } if (v.consumo<=me) { me=v[n].consumo; } }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eddie_666 Postado Abril 11, 2004 Denunciar Share Postado Abril 11, 2004 qual o erro? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Noly Postado Abril 11, 2004 Denunciar Share Postado Abril 11, 2004 Aparece msg:in function "int main()":cannot convert 'float' to 'float' fore aparece também outras mensagens de operandos inválidos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eddie_666 Postado Abril 11, 2004 Denunciar Share Postado Abril 11, 2004 float ma,me; ma=me=0; o primeiro deles, na função main(), tu não podes atribuir um valor inteiro a uma variavel do tipo float. creio que fazendo ma=me=0.0;funcione...posta os outro erros que devem ser algo do tipo, se puderes postar a linha tb, melhor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Noly Postado Abril 11, 2004 Denunciar Share Postado Abril 11, 2004 Não adiantou......A linha que está acusando erro é essa:"verifica(v,n,ma,me);" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eddie_666 Postado Abril 12, 2004 Denunciar Share Postado Abril 12, 2004 verifica(v,n,&ma,&me);creio que seja isso, porque ele espera um ponteiro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Noly Postado Abril 12, 2004 Denunciar Share Postado Abril 12, 2004 aí deu outro erro:invalid operands of types float and"if (v.consumo>ma)" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Turbo Postado Abril 12, 2004 Denunciar Share Postado Abril 12, 2004 o mesmo erro anterior, quando você trabalhar com ponteiro use sempre* & eu esqueci pra q serve o * e o & , porque faz temp q não mexo em C e esquci , mas acho que é pra endereço e valor, respectivamente....valeu... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eddie_666 Postado Abril 13, 2004 Denunciar Share Postado Abril 13, 2004 & se refere a um endereço de memoria e * se refere ao valor armazenado em um endereço de memoria.cara, te aconselho a testar, se tu não for tentando, tu nunca vai aprender a mexer direito com ponteiros. demora um pouco para que tu tenha um certo dominio sobre eles... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Noly
/*
3. Uma empresa transportadora está necessitando realizar
uma estatística do consumo de seus veículos por viagem.
Para tanto fornecerá, para cada viagem, a identificação
do veículo e o consumo por quilômetro. Fazer um programa
que, através de um menu simples, possibilite o cadastramento
dos dados de uma viagem ou a impressão do consumo mínimo e
máximo de todos os veículos cadastrados até o momento. Os
consumos mínimo e máximo deverão ser obtidos por uma única
função, que não pode ler e nem escrever nenhum dado. Os valores
obtidos pela função deverão ser impressos pelo programa principal.
Usar matriz de estruturas na solução do problema, alocando-a
dinamicamente na medida da necessidade. A memória necessária para
guardar a identificação dos veículos deverá ser alocada
dinamicamente. Desalocar toda a memória alocada após o seu uso.
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <ctype.h>
struct veiculo
{
int id;
float consumo;
};
void cadastra(struct veiculo *v,int n);
void verifica(struct veiculo *v,int n,float *ma,float *me);
main(void)
{
struct veiculo *v;
int n=0,mav,mev;
char R;
float ma,me;
ma=me=0;
do
{
clrscr();
printf(" Maior: %f Menor: %f ",ma,me);
printf("\nC - Cadastrar veículo\nI - Imprime maior e menor consumo\nE - Encerra o programa\n");
R=(char)toupper(getche());
switch ®
{
case 'C':
v=(struct veiculo *)realloc(v,n*sizeof(struct veiculo));
if (v==NULL)
{
printf("\nErro de alocação");
getch();
break;
}
cadastra(v,n);
n++;
break;
case 'I':
verifica(v,n,ma,me);
break;
case 'E':
printf("\n\n\n Fim do Programa!!!");
getch();
break;
default:
printf("\nOpção Inválida ");
break;
}
n++;
}while(R!='E');
printf("\nMaior consumo: %.2f Menor consumo: %.2f",ma,me);
getch();
free(v);
}
void cadastra(struct veiculo *v,int n)
{
clrscr();
printf("\n Veiculo: ");
scanf("%d",&v[n].id);
printf("\n Consumo: ");
scanf("%f",&v[n].consumo);
}
void verifica(struct veiculo *v,int n,float *ma,float *me)
{
int i;
for (i=0;i<n;i++)
{
if (v.consumo>=ma)
{
ma=v[n].consumo;
}
if (v.consumo<=me)
{
me=v[n].consumo;
}
}
}
Link para o comentário
Compartilhar em outros sites
8 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.