Ir ao conteúdo

Posts recomendados

Postado

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
Postado
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
Postado
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
Postado

 

 

@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
Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!