Minha primeira postagem. Espero ser a primeira de muitas, tanto como sendo ajudado, como ajudando.
Fiz um programa com a seguinte requisição:
"O Sr. Manoel Joaquim expandiu seus negócios para além dos negócios de 1,99 e agora possui uma loja de conveniências. Faça um programa que implemente uma caixa registradora rudimentar. O programa deverá receber um número desconhecido de valores referentes aos preços das mercadorias. Um valor zero deve ser informado pelo operador para indicar o final da compra. O programa deve então mostrar o total da compra e perguntar o valor em dinheiro que o cliente forneceu, para então calcular e mostrar o valor do troco. Após esta operação, o programa deverá voltar ao ponto inicial, para registrar a próxima compra. A saída deve ser conforme o exemplo abaixo:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float preco, troco, dinheiro, total;
int i;
total = 0;
i = 1;
preco = 1;
printf("LOJAS TABAJARA \n");
printf("Insira o valor de seus produtos. \nDigite 0 para finalizar a insercao.\n \n");
while (preco > 0)
{
printf ("Insira o Preco do Produto: \n", i);
scanf("%f", &preco);
i = i+1;
total = total + 1;
}
printf("Total a pagar: R$ %4.2f \n", total);
printf("Insira o valor pago: R$ %4.2f \n");
scanf("%f", &dinheiro);
troco = dinheiro - total;
printf("Troco: R$ %4.2f", troco);
system ("PAUSE");
system ("CLS");
}
A variável TOTAL deve receber valores aleatoriamente e para indicar o fim das inserções, deve ser digitado 0.
O problema é o seguinte: Ao ser digitado 0, o programa está pegando os valores e subtraindo, ao invés de exibir o total a pagar e pedir o valor pago para calcular o troco.
Algoritmo
declare preco, troco, dinheiro, total real
preco <- 0
total <- 0
escreval("Insira o valor dos produtos. Insira 0 para finalizar a inserção")
enquanto preco <> 0 faca
escreval("Preço do produto")
leia(preco)
total = total + preco
fimenquanto
escreval("Total a pagar: ", total)
escreval("Digite o valor pago")
leia(dinheiro)
troco <- dinheiro - total
escreval("Troco: ", troco)
fimAlgoritmo
Realizei as modificações. Já temos algum progresso.
O problema agora é que o programa não está mais pausando, aguardando que o usuário insira o valor dos produtos, gerando valores “R$ 0,00”. Gera o valor total e pedindo o valor pago e gerando o troco, caso inserido.
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float preco, troco, dinheiro, total;
total = 0;
preco = 0;
printf("LOJAS TABAJARA \n");
printf("Insira o valor de seus produtos. \nDigite 0 para finalizar a insercao.\n \n");
while (preco != 0)
{
printf ("Insira o Preco do Produto: \n");
scanf("%f", &preco);
total = total + preco;
}
printf("Total a pagar: R$ %4.2f \n", total);
printf("Insira o valor pago: \n");
scanf("%f", &dinheiro);
troco = dinheiro - total;
printf("Troco: R$ %4.2f", troco);
system ("PAUSE");
system ("CLS");
}
Veja que você instanciou preço como 0 e depois você tem um while preco != 0 (pois eu fiz assim no algoritmo). Ou seja, uma coisa mata a outra. Instancie ele com valor negativo
preco = (-1);
Isso deve permitir que você consiga entrar no loop. A parte de aguardar é feita pelo scanf.