vouver 0 Denunciar post Postado Outubro 10, 2014 Olá pessoal estou tendo dificuldades com o seguinte problema: "A fim de controlar o caixa, para cada venda o programa deverá:- ler o código da venda (um valor inteiro e positivo);- ler os dados de cada item de venda, isto é:- ler o preço unitário de cada item,- seguido da leitura da quantidade vendida do item;- para cada item lido, exibir o valor do item (preço unitário vezes quantidade do item) e osubtotal da venda (valor acumulado da venda até o momento);- quando não houver mais itens no carrinho do cliente, encerrar a leitura dos itens informandoo valor zero para o preço do item;- note que a quantidade vendida deverá ser lida apenas se o preço unitário não for a flag, istoé, for diferente de zero;Ao encerrar uma venda (com a flag):- informar o total da venda;- ler o valor pago pelo cliente;- calcular e informar o troco;- em seguida, iniciar uma nova venda (fazendo a leitura do código da nova venda).Um código de venda é um valor inteiro e positivo. Entretanto, caso seja informado o valor zerocomo código de venda, o programa deverá finalizar o processo, informando o total de todas asvendas realizadas." O meu código ficou assim: i = 0 total_venda = 0 valor = 1 t_vendas = 0 codigo = input("Informe o código da venda: ") while codigo <> 0 while valor <> 0 preco_un=input("Informe o preço do item: ") qtde=input("Informe a quantidade de itens do produto: ") valor = preco_un * qtde total_venda = total_venda + valor t_vendas = t_vendas + total_venda i = i + 1 end disp("O valor total da venda é " +string(total_venda)+ " reais.") pagamento=input("Insira o valor de pagamento: ") if (pagamento > total_venda) then troco = pagamento - total_venda disp("Valor do troco: " +string(troco)) end end end disp(t_vendas) O problema é que depois que o cliente insere o valor do pagamento, o algoritmo teria que voltar para uma nova venda(até que o codigo seja zero), porém, como eu usei flag no preço(while valor <> 0) ele acaba voltando já na parte de baixo, falando o valor da primeira venda e pedindo pagamento. Travei ai.. como posso terminar esse algoritmo? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Outubro 12, 2014 Crie uma outra variável e insira juntamente ao While, para verificar se ele é <> 0 e também se sua variável for verdadeira, caso contrário ele retorna ao inicio do programa. Compartilhar este post Link para o post Compartilhar em outros sites
vouver 0 Denunciar post Postado Outubro 14, 2014 Crie uma outra variável e insira juntamente ao While, para verificar se ele é <> 0 e também se sua variável for verdadeira, caso contrário ele retorna ao inicio do programa. Sim. Eu consegui voltar. Mas tem outro problema que não entendi por que acontece clc; clear; i = 0 total_venda = 0 valor = 1 t_vendas = 0 retornar=input("Deseja inserir uma nova venda --1-Sim, 0-Não ? ") while retornar <> 0 codigo = input("Informe o código da venda: ") while codigo <> 0 preco_un=input("Informe o preço do item: ") while preco_un <> 0 qtde=input("Informe a quantidade de itens do produto: ") valor = preco_un * qtde total_venda = total_venda + valor t_vendas = t_vendas + total_venda i = i + 1 preco_un=input("Informe o preço do item: ") end disp("O valor total da venda é " +string(total_venda)+ " reais.") pagamento=input("Insira o valor de pagamento: ") if (pagamento > total_venda) then troco = pagamento - total_venda disp("Valor do troco: " +string(troco)) else retornar=input("Deseja inserir uma nova venda --1-Sim, 0-Não ? ") if retornar == 0 then end end end end disp("O total obtido nas vendas é de " +string(t_vendas)) ("Deseja inserir uma nova venda --1-Sim, 0-Não ? ")--- quando digito zero na primeira vez(sem ter feito uma venda) ele vai corretamente direto para "disp("O total obtido nas vendas é de " +string(t_vendas))" Mas quando informo pelo menos uma venda e digito zero novamente, ao inves de ele ir para o "disp("O total obtido nas vendas é de " +string(t_vendas))" e encerrar o programa, ele volta para o "informe o preço..." O que eu deveria fazer? Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Outubro 15, 2014 Você não precisa desta clausula: if retornar == 0 then end O problema é que você tem um outro while dentro do seu while, para que você consiga sair deles é necessário que você defina a variável do segundo diferente de 0 (como está na sua condição) Compartilhar este post Link para o post Compartilhar em outros sites
vouver 0 Denunciar post Postado Outubro 17, 2014 Você não precisa desta clausula: if retornar == 0 then end O problema é que você tem um outro while dentro do seu while, para que você consiga sair deles é necessário que você defina a variável do segundo diferente de 0 (como está na sua condição) Consegui resolver. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites