• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

itsari

[Resolvido] como resolveriam este programa?

20 mensagens neste tópico

O programa consiste na simulação de uma “Máquina de Venda”, como por exemplo, uma máquina de café ou de chocolates e sandes.

Tem que se introduzir uma quantia em moedas suficientes para a compra do produto desejado, depois a máquina fornece o produto e o respectivo troco utilizando o menor número de moedas possível.

Para difucultar, os botões da interface tem as imagens das respectivas moedas a colocar na máquina (0,10; 0,20; 0,50; 1, 2€)

Obrigado pla ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo modo como estás a apresentar o trabalho, parece que queres que o façam por ti. Todos nós trabalhamos, ou estudamos, ou temos mais que fazer senão estar a fazer trabalhos de outros.

O teu programa é simples, basta arrastares os botões e as labels para o formulário, e definires as propriedades correctas (imagens, cores, textos, ...). A coisa mais complicada que possa haver aí é o algoritmo do troco, em que te sugiro o seguinte:

Guardas o troco a dar numa variável, seja troco. Depois percorres o array de moedas disponíveis para dar, por ordem decrescente (da de maior valor para a de menor), e vez qual o valor máximo que podes decrementar do troco, até este ser 0.

Exemplos:

Troco: € 0.90

--> 0.50  +  0.20  +  0.20

Troco: € 1

--> 1

Troco: € 5.40

--> 2  +  2  +  1  +  0.20  +    0.20

NOTA: Assumi que as moedas que tens disponíveis na máquina eram as que disseste em cima. Tens de esclarecer com o teu professor o que fazer no caso do troco ser inferior a 10 cêntimos, por exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nos botoes, alem de defenires a imagem tens de alterar a propriedade 'style' para graphical.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu só preciso me uma orientação de como começar este problema, sei que depois para dar o troco terei que utilizar a função MOD, penso eu.

Tendo de colocar uma variável "soma" em cada botão certo? porque a intenção é quando se clica no botão com a imagem da moeda ele adiciona a soma dessa moeda numa text box.. não sei se me fiz entender :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uma orientacao pra começar ja te deu o softclean. agora vais fazendo e quando encalhares poes aqui o que ja fizeste e a malta ajuda te na parte em que tens duvidas.

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sei que depois para dar o troco terei que utilizar a função MOD, penso eu.

Não precisas de complicar: ser seguires o meu método de cima, obtens o menor número de moedas, apenas fazendo subtracções, e verificar se já chegou ou não a zero (ou seja, não há mais troco para dar).

Tendo de colocar uma variável "soma" em cada botão certo? porque a intenção é quando se clica no botão com a imagem da moeda ele adiciona a soma dessa moeda numa text box.. não sei se me fiz entender :S

Não, porque se colocares uma variável soma em cada botão, ela apenas vai estar definida para esse botão, logo a variável apenas pode ser usada se for global. Tens uma explicação sobre isso em:

http://www.geocities.com/ResearchTriangle/System/6408/vbasic/fr_vbasic.htm#VARI

Ou podes pegar na textbox e acumulares lá o total a pagar, é capaz de ficar mais fácil. No text de cada botão de produto, pões o valor numérico, e depois o código de cada botão será algo como:

dim total as Single
total = Val(txtTotal.text)    ' a tua textbox de total
total += Val(btnBolo.text)  ' aqui substituis pelo nome do botao respectivo
txtTotal.text = total           ' é atribuido o novo valor ao total, e actualiza a textbox do montante a pagar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

2h5pf1y.jpg

A interface é esta. a intenção é o utilizador escolher o produto, depois clicar nos botões e consoante ele carrega nos botões aparece na text box "total" o valor já colocado. Depois é so comprar o produto.

Depois tava a pensar por o MOD para aparecer o nr de moedas em cada text box respectivo da moeda.

Por exemplo:

o utilizador mete 5€ e o produto custa 1€;

Na text box de 2€ aparece o nr 2, nas outras 0;

mas assim é capaz de ser complicado..

Vou ter de programar os radio buttons com os valores de cada item e mais os botões. Vou tentar fazer isso agora.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois tava a pensar por o MOD para aparecer o nr de moedas em cada text box respectivo da moeda.

Por exemplo:

o utilizador mete 5€ e o produto custa 1€;

Na text box de 2€ aparece o nr 2, nas outras 0;

mas assim é capaz de ser complicado..

Não não! Ainda é mais directo que a minha ideia. Tens é que te lembrar de subtrair no troco. fazes um ciclo while, com a condição de que enquanto o troco a dar não chegar a zero, vai fazendo o MOD pelas moedas. Usa o mesmo método que te descrevi em cima, mas usando o MOD é mais directo.

No meio disto tudo, não te esqueças de verificar se o utilizador já deu o dinheiro necessário para comprar os produtos. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo:

o utilizador mete 5€ e o produto custa 1€;

isto nao faz muito sentido. acho k ficava bem pores um

SE total >=1€ ENTAO nao aceitar mais moedas

uma vez que o produto mais caro é 1€ nao faz sentido aceitar 2 moedas de 2€.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

M@KO, acho que o interesse do trabalho é por o pessoal a trabalhar com o MOD, porque sem dúvida é exagerado, mas repara que o programa foca grande atenção no algoritmo do troco. Até porque nas máquinas por o dinheiro que quiseres, e se tiveres a mais, no fim da compra, dá-te o troco.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim penso que o MOD é o essencial do programa. Até porque o prof colocou um extra que se pusermos € inferior ao pedido ele não dá o produto. e ai usamos a função IF.

Isto está complicado, ainda só defeni as propriedades dos Radio Button. Agora vou tentar que clicando em cada botão actualize a text box do total.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal estou aqui com umas dúvidas..

Já consegui por o total a actualizar qd carregamos nos botões das moedas, mas agr aparece-me outro prob. q são as message box:

Private Sub btn6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncomprar.Click

        If rb1.Checked = True And total < 0.5 Then

If rb1.Checked = True And total < 0.5 Then

            MessageBox.Show("Insira dinheiro suficiente")

        Else

            MessageBox.Show("Comprou o produto. Obrigado")

        End If

       

        If rb2.Checked = True And total < 0.6 Then

            MessageBox.Show("Insira dinheiro suficiente")

        Else

            MessageBox.Show("Comprou o produto.Obrigado")

            rb1.Checked = False

        End If

        If rb3.Checked = True And total < 0.4 Then

            MessageBox.Show("Insira dinheiro suficiente")

        Else

            MessageBox.Show("Comprou o produto.Obrigado")

        End If

        If rb4.Checked = True And total < 1 Then

            MessageBox.Show("Insira dinheiro suficiente")

        Else

            MessageBox.Show("Comprou o produto.Obrigado")

        End If

    End Sub

A questão prende-se q qd um utilizador não mete dinheiro suficiente para o 2do produto (neste caso rb2) ele aparece a msg do " comprou o produto" e só dps a outra do " n tem dinheiro suficiente".

Alguem me sabe dizer porque isto acontece e como resolver?

Obrg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta fazer assim para cada produto (mudando o nome da caixa e o custo)

        If rb2.Checked = True And total < 0.6 Then
            MessageBox.Show("Insira dinheiro suficiente")
            exit sub
        Else
            MessageBox.Show("Comprou o produto.Obrigado")
            exit sub
        End If

O Exit Sub permite sair da rotina actual, sem processar o resto que vem para baixo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá.

Já consegui resolver aquela situação mas agora o MOD ta-me dar-me em doido!  :wallbash:

então suponhamos que a v2 é a variável 2€ e a v1 a variável de 1€ e assim sucessivamente, então:

v2 = total (das moedas inseridas) / ??

vresto = total mod ??

v1 = vresto / ??

N consigo perceber pelo q tnh q dividir  :(

Se puderem ajudem-me

Obrg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu hoje de manhã ia responder, mas acabei por não chegar lá com o mod, só com a divisão mesmo... Podes deixar aqui o código respeitante ao MOD, sff?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, um programa não se resolve, porque um programa não é um problema. Um programa é uma solução!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sorry só responder agr.

Segue o código final.. Acabei por não utilizar o MOD..

vtwix = 0.5

        troco = total - vtwix

        txt5.Text = troco * 100 \ 200

        vresto = troco * 100

        vresto = vresto - txt5.Text * 200

        txt4.Text = vresto \ 100

        vresto = vresto - txt4.Text * 100

        txt3.Text = vresto \ 50

        vresto = vresto - txt3.Text * 50

        txt2.Text = vresto \ 20

        vresto = vresto - txt2.Text * 20

        txt1.Text = vresto \ 10

        vresto = vresto - txt1.Text * 10

        If total < 50 / 100 Then

            MessageBox.Show("Insira Dinheiro Suficiente.")

        Else

            MessageBox.Show("Comprou o Produto. O seu troco é " & troco & " €")

            txt6.Text = ""

            total = 0

        End If

E está a funcionar a 100%.

Thanxxx pela ajuda  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora