tpiardi 0 Denunciar post Postado Novembro 3, 2009 Eu estou aqui a duas horas tentando, mas não consigo fazer a função CalculeVendas retornar o valor, para que o programa continue executando, alguém ai faz idéia de o que está errado? #include <stdio.h> #include <stdlib.h> #define MAX 100 //const int max = 100; typedef struct tVinho { char nome, nomeFabricante, nomeDistribuidor, tipo; int anoSafra, anoEnvasamento, unidades; float preco; } tVinho; void leiaVinho(tVinho vinho); void escrevaVinho(tVinho vinho); float calculeVendas(tVinho vinho); // leitura de um registro de vinho void leiaVinho(tVinho vinho) { printf("Digite o nome do vinho: "); scanf("%s", &vinho.nome); printf("Digite o nome do fabricante: "); scanf("%s", &vinho.nomeFabricante); printf("Digite o nome do Distribuidor: "); scanf("%s", &vinho.nomeDistribuidor); printf("Digite o tipo do vinho: "); scanf("%s", &vinho.tipo); printf("Digite o ano da safra: "); scanf("%d", &vinho.anoSafra); printf("Digite o ano do envasamento: "); scanf("%d", &vinho.anoEnvasamento); printf("Digite o preco do vinho: "); scanf("%f", &vinho.preco); printf("Digite a quantidade de unidades: "); scanf("%d", &vinho.unidades); } // leitura de um registro de vinho void escrevaVinho(tVinho vinho) { printf("O nome do vinho é: %s", vinho.nome); printf("O nome do fabricante é: %s", vinho.nomeFabricante); printf("O nome do distribuidor é: %s", vinho.nomeDistribuidor); printf("O tipo do vinho é: %s", vinho.tipo); printf("O ano da safra é: %d", vinho.anoSafra); printf("O ano do envasamento é: %d", vinho.anoEnvasamento); printf("O preco do vinho é: %f", vinho.preco); printf("A quantidade de unidades é: %d", vinho.tipo); } // retorna o produto do preço pelo número de unidades vendidas } float calculeVendas (tVinho vinho) { return (vinho.unidades * vinho.preco); } int main() { int i, numeroItens; float somaVendas, maiorVenda, mediaVinhos; tVinho vinho[MAX]; // leitura da relação de dados e cálculo da média e da maior venda } printf("Digite a quantidade de itens :"); scanf("%d", &numeroItens); somaVendas = 0; maiorVenda = -1; for (i = 0; i < numeroItens; i++) { leiaVinho(vinho[i]); somaVendas = somaVendas + calculeVendas(vinho[i]); if (calculeVendas(vinho[i]) > maiorVenda) maiorVenda = calculeVendas(vinho[i]); } mediaVinhos = somaVendas/numeroItens; //apresentação da melhor venda for (i = 0; i <numeroItens; i++); { if (calculeVendas(vinho[i]) == maiorVenda) escrevaVinho(vinho[i]); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Novembro 3, 2009 Cara sua funcao leiaVinho esta errada, não sou expert nisso mas a sua função esta recebendo o parametro por referência, logo os dados lidos são perdidos. Leia mais sobre passando struct por parâmetro, acho que vai ajudar. Por hora, se você alterar sua função para que ela retorne um tVinho, e fazer as devidas modificações no seu programa, seu programa irá funcionar. abs tVinho leiaVinho() { tVinho vinho; printf("Digite o nome do vinho: "); scanf("%s", &vinho.nome); printf("Digite o nome do fabricante: "); scanf("%s", &vinho.nomeFabricante); printf("Digite o nome do Distribuidor: "); scanf("%s", &vinho.nomeDistribuidor); printf("Digite o tipo do vinho: "); scanf("%s", &vinho.tipo); printf("Digite o ano da safra: "); scanf("%d", &vinho.anoSafra); printf("Digite o ano do envasamento: "); scanf("%d", &vinho.anoEnvasamento); printf("Digite o preco do vinho: "); scanf("%f", &vinho.preco); printf("Digite a quantidade de unidades: "); scanf("%d", &vinho.unidades); return vinho; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 3, 2009 Preste atenção nas coisas: vinho.c: In function ‘escrevaVinho’:vinho.c:41: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’ vinho.c:42: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’ vinho.c:43: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’ vinho.c:44: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’ Compartilhar este post Link para o post Compartilhar em outros sites