×
Ir ao conteúdo
  • Cadastre-se

C não identifico o erro na questão


Posts recomendados

Escreva uma função que retorne o valor total a ser pago em uma compra de supermercado. A função deve ler a quantidade e o preço unitário de cada produto, atualizando o subtotal a cada iteração do laço

 

#include <stdio.h>
#include <stdlib.h>

    float valor_total(preco, quant)
    {
    float total
    total=0;
    printf("Digite a quantidade de um produto");
    scanf("%f",&quant);
    while(quant<=0);

    {
int main ()
{
    total=preco*quant;
    printf("\n Total parcial", total);
    printf("\n Digite o preco do produto");
    scanf("%f",preco);
}
printf("Soma total %f",total);
return 0;

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite,

Já vi que na primeira linha faltou o ";" . 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

39 minutos atrás, Caio Fagundes21 disse:

Escreva uma função que retorne o valor total a ser pago em uma compra de supermercado. A função deve ler a quantidade e o preço unitário de cada produto, atualizando o subtotal a cada iteração do laço

#include <stdio.h>
#include <stdlib.h>

    float valor_total(preco, quant)
    {
    float total
    total=0;
    printf("Digite a quantidade de um produto");
    scanf("%f",&quant);
    while(quant<=0);

    {
int main ()
{
    total=preco*quant;
    printf("\n Total parcial", total);
    printf("\n Digite o preco do produto");
    scanf("%f",preco);
}
printf("Soma total %f",total);
return 0;

}

 

prog.c:4:5: error: parameter names (without types) in function declaration [-Werror] float valor_total(preco, quant); ^~~~~ prog.c:5:5: error: expected identifier or ‘(’ before ‘{’ token { ^ cc1: all warnings being treated as errors

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, Caio Fagundes21 disse:
 total=preco*quant;
   

 

Essa é a primeira linha de seu programa. Tem ideia do valor de preco e quant? Algum palpite sobre o valor de total, produto de dois valores desconhecidos?

 

E qual será o tipo dessas variáveis, já que não declarou nenhuma?

 

2 horas atrás, Caio Fagundes21 disse:
  float valor_total(preco, quant)
   

 

E quais serão os tipos desses parâmetros, que também não declarou?

 

2 horas atrás, Caio Fagundes21 disse:
  float valor_total(preco, quant)
    {
    float total
    total=0;
    printf("Digite a quantidade de um produto");
    scanf("%f",&quant);
    while(quant<=0);

 

E essa função?

 

O que é total, que não declarou?

 

TESTE sempre o retorno de scanf()

 

Notou que está lendo o valor de quant em cima do valor que veio na chamada? Então porque o parâmetro afinal?

 

E o ';' termina o loop, então o while não faz nada.

 

Seu programa está muito longe de fazer sentido...

 

1 hora atrás, Caio Fagundes21 disse:

prog.c:4:5: error: parameter names (without types) in function declaration [-Werror] float valor_total(preco, quant); ^~~~~ prog.c:5:5: error: expected identifier or ‘(’ before ‘{’ token { ^ cc1: all warnings being treated as errors

 

Porque não usa um compilador com as mensagens em português? Parece que não entendeu essas em inglês: "parâmetros sem tipo na declaração da função"

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

 

 

@Caio Fagundes21                                            você precisa criar as variáveis antes de tudo , e dentro da função main , e inicializar elas com algum valor , e que pode ser o valor zero mesmo ,  e siga o que diz o enunciado ,  ele é o chefe ,  onde diz para ler os dados dentro de uma função externa , e não na função main , e essa função deve retornar um valor , que será o vaLor total das compras ,  e aí já cumpriu o que pede o enunciado , mas creio que no finaL , pode escrever o resultado na tela para ver se está tudo certo ,  e seu programa , corrigindo com algumas modificações , poderia ser assim  ou de outro modo como quiserem que seja    

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef enum {preco=4,quant=8}total;
float valor_total()                                 // não precisa receber nenhum dado
{                                                   // aqui na função é que vai pegar os dados
    float valor_total = 0.0,sub_total=0.0, 
          // total = 0;  pode inicializar ao mesmo tempo em que for criada
          preco = 0.0;
    char op = 'S',r[51];
    int qtd = 0, a = 0;
    do                                              // laço do / while
    {                                               // inicio das iteracoes
        printf("\na quantidade de determinado produto --> ");
        label_1:
        a = scanf("%d", &qtd);
        fgets(r, 50, stdin);                        // limpa o buffer pegando 
                                                    // o resto que estiver no buffer
        printf("valor de qtd -------------------------= %d\n",   
            qtd);                                   // escrever para ver o que pegou mesmo
        printf("Retorno do scanf ---------------------= %d\n", 
                                                 a);// escrever para ver se pegou alguma coisa mesmo
        if (a == 0)
        {
            printf("\nfalhou !\n");                 // msg
            goto label_1;                           // volta ao scanf para ler novamente
        }
        printf("\nO Preco Unitario de determinado produto ");
        label_2:
        a = scanf("%f", &preco);                    // testar o retorno de scanf
        fgets(r, 50, stdin);                        // pegar o resto que estiver no buffer 
        printf("valor de preco -----------------------= R$ %.2f\n", 
                                             preco);// 7 é qtd de dígitos e senao houver , 
                                                    // serao preechidos com espaços,  e .2 
                                                    // é qtd de casas decimais
        if (a == 0)
        {
            printf("\nfalhou !\n");                 // msg
            goto label_2;                           // volta ao scanf para ler novamente
        }
        sub_total = (float)qtd * preco;             // calcula o valor desse produto
        printf("\nComprar Outro produto S/N ------------> ");     // msg
        op = fgetc(stdin);                          // pega uma letra digitada
        if (op > 100)op -= 32;                      // converte a letra para MaiuscuLa
        printf("valor de op --------------------------= %c\n", 
            op);                                    // escrever se pegou e converteu mesmo
        valor_total += sub_total;                   // acumula o valor TotaL
    }                                               // fim das iteracoes
    while (op == 'S');                              // enquanto digitar a letra S de sim 
    printf("\n\nvalor total dentro da funcao ---------> R$ %.2f\n", 
                             valor_total);          // escrever para ver se calculou certo
    return valor_total;
}
int main()
{
    float ret = valor_total();                      // ret pega o retorno da funçao
    printf("\nO VaLor TotaL a Ser PaGo eh --------->> R$ %.2f",
                                              ret); // escreve o resultado 
    printf("\n\n\n");
    return 0;                                       // volta para o windows
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Caio Fagundes21 Tem vários problemas nesse código: Em algumas partes falta declaração e tipo das variáveis; Tem ponto e vírgula em lugar indevido ou faltando; scanf sem o operador de endereço; Escopos errados, etc. Acho que devia pegar um livro básico ou apostila de programação para entender melhor a linguagem. Sobre o programa, o código para ler p.ex 5 produtos poderia ser assim,

 

#include <stdio.h>

float compras(int produtos){
    float total = 0;
    float valor;
    int quantidade;
    
    for(int i = 1; i <= produtos; i += 1){
        printf("PRODUTO %d\n", i);
        printf("Valor: ");
        scanf("%f", &valor);
        printf("Quantidade: ");
        scanf("%d", &quantidade);
        puts("--------------");
        total += valor * quantidade;
    }
    return total;
}

int main(void){
    printf("VALOR TOTAL = %.2f\n", compras(5));
    return 0;
}

 

  • Curtir 1
  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.