Ir ao conteúdo
  • Cadastre-se

C Variável não retorna ao valor 0


Posts recomendados

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

int pedido=1, qtd, produto, cadastros, total_itens[]={}, n, qtd_produto[5]={};
float preco[5]={12.00, 3.00, 4.00, 3.50, 6.00}, valor_cliente[5]={}, total_cliente[]={}, total_a_pagar, media;

int main() {
	
/* qtd_produto: Mostra a quantidade de itens totais de todos os pedidos;
   preco: Guarda os valores dos produtos em um vetor;
   valor_cliente: Guarda os custos por produto;
   total_cliente: mostra o preco a pagar final;
   total_a_pagar[]: calcular o valor total que o cliente vai pagar;
   total_itens[]: Calcular a QTD de produtos
   media: media de valor por pedido;
   total: somar todos os valores dentro de total_a_pagar[];*/
	
	// processamento
	while (pedido==1){
			
	printf ("Deseja realizar o pedido? SIM: 1 ou NAO: 0\n");
	scanf ("%d",&pedido);
	
	while (pedido==1){
		printf ("1-Sanduiche Aberto\n2-Sanduiche Universitario\n3-Misto Quente\n4-Queijo Quente\n5-Bauru\nDigite o codigo do produto: ");
		scanf ("%d",&produto);
		cadastros++;
		total_a_pagar = 0;
		
	switch (produto){	

		case 1:
	 	{   					
			printf ("Digite a quantidade: ");												
			scanf ("%d", &qtd);														
	  			valor_cliente[0] = preco[0] * qtd;     // Descobrir o valor
	  			qtd_produto[0] += qtd; // Descobrir a quantidade	
	 	}
		break;

	 	case 2:
	  	{
	  		printf ("Digite a quantidade: ");
			scanf ("%d", &qtd);
	  	 		valor_cliente[1]= preco[1] * qtd;        // Descobrir o valor
	  	 		qtd_produto[1] += qtd; // Descobrir a quantidade
	    }
		break;

	    case 3:
	  	{
	  		printf ("Digite a quantidade: ");
			scanf ("%d", &qtd);
		  	 	valor_cliente[2] = preco[2] * qtd;	 	 // Descobrir o valor
		  	 	qtd_produto[2] += qtd; 	 // Descobrir a quantidade
	    }
		break;

		case 4:
	  	{
	  		printf ("Digite a quantidade: ");
			scanf ("%d", &qtd);
		  	 	valor_cliente[3] = preco[3] * qtd;	     // Descobrir o valor
				qtd_produto[3] += qtd;   // Descobrir a quantidade
	    }
		break;	
					
		case 5:
	  	{
	  	printf ("Digite a quantidade: ");
		scanf ("%d", &qtd);
			valor_cliente[4] = preco[4] * qtd; 	     // Descobrir o valor
	  	 	qtd_produto[4] += qtd;	 // Descobrir a quantidade
	    }
		break;			
	}	
	
	// Calculos
		
	total_a_pagar = valor_cliente[0]+valor_cliente[1]+valor_cliente[2]+valor_cliente[3]+valor_cliente[4];
	total_itens[n] = qtd_produto[0]+qtd_produto[1]+qtd_produto[2]+qtd_produto[3]+qtd_produto[4];
	media = total_a_pagar/cadastros;
	
	printf ("_______________________________________________________________________________________\n");
	printf ("\nFinalizar o pedido digite 2\nContinuar o pedido o pedido digite 1\n");
	scanf ("%d", &pedido);
	}
	// Total de QTD e Custos do Cliente;
		if (pedido == 2){
		printf ("Nota Fiscal: \n");
		printf ("\nCusto Total: %.2lfR$\n", total_a_pagar);
		printf ("Total de Itens: %d\n", total_itens[n]);
	    printf ("_______________________________________________________________________________________\n");	  
	    
	printf ("\nCadastrar outro pedido: \nDIGITE 1 \nResultado das vendas do dia: \nDIGITE 0\n");
	scanf ("%d", &pedido);
	
	} 
	} 
	// Mostrar os resultados no fim do dia
	if (pedido==0){
    printf ("_______________________________________________________________________________________\n");
	printf ("\nFORAM VENDIDOS NO TOTAL\n");
	printf ("\nSanduiche Aberto: %d", qtd_produto[0]);
	printf ("\nSanduiche Universitario: %d", qtd_produto[1]);
	printf ("\nMisto Quente: %d", qtd_produto[2]);
	printf ("\nQueijo Quente: %d", qtd_produto[3]);
	printf ("\nBauru: %d", qtd_produto[4]);
	printf ("\n_______________________________________________________________________________________\n");
	
	printf ("\nValor total vendido %.2f R$", total_a_pagar);
	printf ("\nClientes atendidos %d", cadastros);
	printf ("\nMedia de valor pago por pedido %.2lf R$", media);
	}
	return 0;
}

Um programa em C, que estou fazendo relacionado a vendas.

O problema que estou tendo em específico é do termo total_a_pagar, não está voltando a 0.

 

Vou anexar as imagens do que está acontecendo.

Mas resumindo, o programa ainda guarda o valor do pedido anterior e soma ao valor do segundo pedido (valor_a_pagar e total_itens[n]) <-- esssas váriáveis que estou tendo um erro.

Está também em anexo uma imagem da questão que devo fazer.

 

Pedido 1.png

Pedido 2.png

Questão.png

Link para o comentário
Compartilhar em outros sites

@AsafeBernardoOficial    como você sabe que a variável total_a_pagar não está voltando a zero ?  ,  testei e está zerando sim , aqui um print

454974619_totalapagar.thumb.jpg.36b4e60edac259de560f6e232d90f370.jpg

e no switch não precisa das chaves nos case não , e esse somatório poderia ser melhorado ,

printf("Digite a quantidade: ");
scanf("%d", &qtd);
switch (produto)
{
    case 1:
        valor_cliente[0] = preco[0] * qtd;     // Descobrir o valor
        qtd_produto[0] += qtd;                 // Descobrir a quantidade	
        break;
    case 2:
        valor_cliente[1] = preco[1] * qtd;     // Descobrir o valor
        qtd_produto[1] += qtd;                 // Descobrir a quantidade
        break;
    case 3:
        valor_cliente[2] = preco[2] * qtd;     // Descobrir o valor
        qtd_produto[2] += qtd;                 // Descobrir a quantidade
        break;
    case 4:
        valor_cliente[3] = preco[3] * qtd;     // Descobrir o valor
        qtd_produto[3] += qtd;                 // Descobrir a quantidade
        break;
    case 5:
        valor_cliente[4] = preco[4] * qtd;     // Descobrir o valor
        qtd_produto[4] += qtd;                 // Descobrir a quantidade
        break;
    default :
        printf("Opcao InValiDa . . . !\n\n");
}

 

Link para o comentário
Compartilhar em outros sites

@AsafeBernardoOficial Você ainda está inicializando o vetor de uma forma que só e valida em C++.

6 horas atrás, AsafeBernardoOficial disse:

qtd_produto[5]={}

Coloque um 0 entre as chaves para ser valido em C.

 

O vetor total_itens[] não tem posições validas.

 

Eu recomendo você começar de novo.

 

Eu fiz um exemplo mas eu acho que ficou muito extenso para postar no fórum, então eu vou deixar no replit.

https://replit.com/@KGin/SandwichStore#main.c

Link para o comentário
Compartilhar em outros sites

Olá (todos)

 

 

18 horas atrás, AsafeBernardoOficial disse:

switch (produto){

Switch de ligação entre alimento e variável é redundante.

 

Por quê?

image.png.7afd2b7e447d1eaad7292658c29cfe84.png

 

Notou-se que o código (dos alimentos) e a posição de variáveis (do vetor) são coincidentes.

Consequentemente, o bloco de seleção é redundância porque "ligar os pontinhos" que foram convenientemente ligados.

 

Ainda é possível alocar uma posição extra no vetor e com isso os índices correspondem aos códigos.

_cliente__pedido[6]= {0}; /**< vetor de pedido para os alimentos de 1 a 5. */

 

 

 

 

 

 

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!