Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tpiardi

C - Função não retorna

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.