Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vouver

problema - estruturas de repetição

Recommended Posts

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 o
subtotal da venda (valor acumulado da venda até o momento);
- quando não houver mais itens no carrinho do cliente, encerrar a leitura dos itens informando
o 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 zero
como código de venda, o programa deverá finalizar o processo, informando o total de todas as
vendas 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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.