1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Exercicio. ajuda / explicaçao

Discussão em 'Programação' iniciada por p!nk., 16 de Outubro de 2007. (Respostas: 25; Visualizações: 2488)

  1. p!nk.

    p!nk. Power Member

    boas tardes malta.

    entrei este ano para Eng. Informatica, e nunca tinha visto programaçao à minha frente! contudo, ha colegas meus que já têm algumas bases, pois vieram de outras Áreas que nao a minha ... logo, posso dizer k tou um pouco como os meninos quando têm Ingles pela 1ª vez!

    ja tenho um exercicio para resolver e ser avaliado, e nao tou a conseguir ser capaz de o resolver. alguem me ajuda? (disciplina de APROG - em "Pseudo-Codigo" !)

    passo a citar:
    Ler nomes de produtos e respectivos preços até ser introduzida a palavra “Fim” como nome de produto. De seguida deverá ser apresentado o nome do produto mais caro e do mais barato, bem como os respectivos preços.
     
  2. MARSHALL

    MARSHALL Power Member

    Boa tarde.

    While nome <> Fim
    Ler nome
    Ler preco
    If preco > precomaior Then
    nomemaior = nome
    precomaior = preco
    else if preco < precomenor then
    nomemenor = nome
    precomenor = preco
    end if
    end while
    Imprimir "Produto com menor preco " + nome + " " + precomenor
    Imprimir "Produto com maior preco " + nome + " " + precomaior

    Este caso não preve caso de dois produtos com o mesmo preco, penso que seja algum simples assim.
    Eu ja não me lembro bem de psedocodigo e os termos variam de sitio para sitio.

    Cumps [[]]
     
  3. p!nk.

    p!nk. Power Member

    Marshall, se a mha nota der pa dividir por dois, eu divido kntg! ta bem??

    OBRIGADAO MESMO!!

    em relaçao aos termos, o que muda , e o Ingles po PT! mais nada!!

    While -> Enquanto
    If -> Se
    etc ...

    UM ABRAÇAO!!!
     
  4. Ola pessoal ja agora aproveito pois tb keria alguma ajuda! Tou ali na mm situacao do pink isto de programacao e complicado :smilliex:! Deem-me ai uma ajudinha sff...

    O problema e o seguinte:

    Pretende-se simular o funcionamento de uma máquina de venda de café. Admite-se que o custo do café é de 40 cêntimos. A máquina só aceita moedas de 10, 20, 50 cêntimos. O troco deve ser calculado de forma a corresponder à menor quantidade possível de moedas. Simule a máquina de café e indique quantas moedas de cada valor, a máquina deverá dar de troco.


    Obrgd fikem bm!!
     
  5. TheRieper

    TheRieper Power Member

    moeda[4] / incrementa a variavel moeda com 4 posições
    dinheiro=0
    i=1
    while dinheiro<=40 /garante que o cíclo corra até a haver dinheiro suficiente para o café
    ler moeda /lê a moeda introduzida e grava-a na posição do vector contado pela variavel i
    dinheiro=dinheiro+moeda /o dinheiro total introduzido na máquina é actualizado com o valor da última moeda introduzida
    i=i+1 /incrementa a variável i
    if moeda<>10 and moeda<>20 and moeda<>50
    then write "A moeda introduzida é invalida"
    write moeda /esta condição verifica se a moeda introduzida é uma das aceites, caso contrário, é ejectada.
    end if
    end while
    troco=dinheiro-40 /calcula o troco
    while j<i+1 /imprime as moedas introduzidas na sua ordem correcta
    Imprimir (moeda)
    end while

    já não uso pseudo código a uns anitos,mas como foi referido o pseudo codigo varia de local para local, na terminologia. tentei usar uma terminologia igual a do Marshall.
    PS: no último ciclo podes usar if, apenas não me lembrava da terminologia correcta em pseudo código e não te queria induzir em erro.

    Já agora, um conselho. sempre que les o enunciado, estrutura mentalmente, imagina o que tu terias que fazer para poderes atingir esse fim. depois é só pores o programa a fazer isso.


    Abraço
     
    Última edição: 18 de Outubro de 2007
  6. OubeLa

    OubeLa Power Member

    Programei uma placa FPGA em liguagem de descrição de hardware (naquele caso Verilog), e uma parte do trabalho era essa :lol:
     
  7. MARSHALL

    MARSHALL Power Member

    Boas.

    Fiz em pseudo-codigo
    dinheiro = 0
    // Este while vai verificar se ja tem dinheiro sefeciente
    while dinheiro < 40
    //Este segundo while lê o valor até ser introduzido um dos 3 valores
    while moeda <> 10 and moeda <> 20 and moeda <> 50
    ler moeda
    end While
    dinheiro = dinheiro + moeda
    //Volta ao primeiro while e verifica se ja tem dinheiro que chegue, se não tiver entra e pede que introduza mais dinheiro
    end While

    troco = dinheiro - 40
    // Divide o troco por 50 e aproveita a parte inteira do numero
    // Exemplo o utilizador inseriu uma moeda de 20 e depois uma de 50
    // A maquina tem 70 centimos dividimos por 50 o resultado é 1.4
    // Aproveitando o valor inteiro sabemos que temso de dar uma moeda de 50
    mcin = parteinteira(Troco / 50)
    // Agora que ja sabemos que demos um numero de moedas de 50
    // Vamos retirar esse valro de moedas ao troco
    // Os proximos passos seguem a mesma lógica
    Troco = Troco - (50 * mcin)
    mvin = parteinteira(Troco / 20)
    Troco = Troco - (20 * mvin)
    mdez = parteinteira(Troco / 10)
    Imprimir "Moedas de cinquenta " + mcin + " Moedas de vinte " + mvin + " Moedas de 10 " + mvin

    Cums [[]]
     
  8. MARSHALL

    MARSHALL Power Member

    Boas.

    Fiz em pseudo-codigo
    dinheiro = 0
    // Este while vai verificar se ja tem dinheiro sufeciente
    while dinheiro < 40
    //Este segundo while lê o valor até ser introduzido um dos 3 valores
    while moeda <> 10 and moeda <> 20 and moeda <> 50
    ler moeda
    end While
    dinheiro = dinheiro + moeda
    //Volta ao primeiro while e verifica se ja tem dinheiro que chegue, se não tiver entra e pede que introduza mais dinheiro
    end While

    troco = dinheiro - 40
    // Divide o troco por 50 e aproveita a parte inteira do numero
    // Exemplo o utilizador inseriu uma moeda de 20 e depois uma de 50
    // A maquina tem 70 centimos dividimos por 50 o resultado é 1.4
    // Aproveitando o valor inteiro sabemos que temos de dar uma moeda de 50
    mcin = parteinteira(Troco / 50)
    // Agora que ja sabemos que demos um numero de moedas de 50
    // Vamos retirar esse valor de moedas ao troco
    Troco = Troco - (50 * mcin)
    // Os proximos passos seguem a mesma lógica
    mvin = parteinteira(Troco / 20)
    Troco = Troco - (20 * mvin)
    mdez = parteinteira(Troco / 10)
    Imprimir "Moedas de cinquenta " + mcin + " Moedas de vinte " + mvin + " Moedas de 10 " + mvin

    Cums [[]]
     
    Última edição: 17 de Outubro de 2007
  9. TheRieper

    TheRieper Power Member


    no que toca a parte do troco complicaste. basta subtrair ao dinheiro total inserido o custo do café e poupas muitas linhas de código e tinta/carbono do lápis:P

    Abraço
     
    Última edição: 18 de Outubro de 2007
  10. MARSHALL

    MARSHALL Power Member

    Boas estas a esquecer que temos de saber quantas moedas de 50, 20 ou 0 temos que dar de troco.
    Apresenta uma solução que verificaque o numeros de moedas a dar mais plussivel e adaptavel a qualquer preco, imagina que ate havia um cafe masi caro.

    Cumps.
     
  11. MARSHALL

    MARSHALL Power Member



    E ja agora alteras-te este teu pseudo-codigo que estava todo incorreto da primeira vez. E não diags que não e ja agora esta instruçao "while dinheiro<=40" basta verificar se e menor porque 40 centimos ja chegam.
    Nem sequer verificas se a moeda introduzida estava certa, e a maquina não te mde dar troco das moedas introduzidas, imagina que colocas 20+50 ficas com 70, o troco iria ser uma de 20 e uam de 10. Onde o teu programa faz isso. Para não falar mais.
     
  12. TheRieper

    TheRieper Power Member

    Sendo assim até o teu algoritmo tá iincorrecto porque tu subtrais ao dinheiro introduzido o preço exacto do cafe para ter o troco(40) e não uma variavel que contenha o preço exacto. eu não disse que o meu programa tava perfeito. alias o teu foi feito bem melhor, apesar daqueles pequenos erros que vi. apenas corrigi os teus erros de modo a que quem pediu ajuda nao caisse neles. e sim já corrigi alguns dos erros do meu. alias. eu fiz o meu a pressa a noite antes de ir chonar. para saberes o troco exacto com que moedas vao ter que sair basta acrescentar um IF com operações matematicas com a parte inteira das divisões como fizeste, apenas penso que com if seria mais eficiente. não afirmei nenhum estar melhor ou pior. apenas te corrigi dois erros, chamam-se criticas construtivas.;)

    PS: Repara nas razões que apontei para fazer o edit no fundo do post. lá tá indicado que tive a corrigir erros;) não tenho vergonha de admitir que erro. errar é humano e é com erros que aprendemos
    Abraço
     
    Última edição: 18 de Outubro de 2007
  13. ajmartins

    ajmartins Power Member

    Boas

    Mas na parte de inserção de moedas, é melhor ter um while assim so aceita e soma se for introduzida uma moeda de 10 20 ou 50, ai aceita a moeda a avanca a verificar se ja temos 40 centimos.
    O que eu faço é troco = dinheiro - 40, pegas no valor introduzido e tiras o valor do cafe terns o troco e depois vejo quantas moedas de 50 pode dar e de 20 e de 10.
    É o que pede e não devolver moedas introduzidas.

    Cumps[[]]
     
  14. TheRieper

    TheRieper Power Member

    A parte da devolução e para o caso de moedas de 1 cent, 5 cents, ou 1 ou 2 euros;) lê bem o código. a parte do troco também pode ser resolvida(Agora que penso) verificando as moedas introduzidas (que gravei num vector) e ver a que está a mais, caso sejam varias, caso contrário (sendo apenas de 50 cents) devolvia-se uma de 10cents. isto pode ser feito com um if. mas agora tou em aula:P

    Abraço
     
  15. MARSHALL

    MARSHALL Power Member

    Boas.

    Mas para dar troco não é precisso if´s, estamos a falar em soluções funcionais,um programa não é assim. Ai um if e tal, o meu exemplo faz aquelas contas para ver quantas de 50 pode dar, depois de 20 e depois de 10 e funciona com qualquer valor introduzido. Pode ser adapateval facilmente, aparece-te um caso novo tens de adpatqar o teu programa todo gracas a éssas pre-programações do caso de for isto e aquilo. Entendes? O meu fosse qual fosse o limiote que colocasse-mos de inserir ele sabia quantas moedas de cada deveria dar.

    Cumps.
     
  16. MARSHALL

    MARSHALL Power Member

    E o caso pratico é introduziu X dinheiro subtrai o preço e da o troco, não precissamso de voltar a verificar as moedas.
    Isso são as cabines telefonicas que metes moedas e ela da-te o troco das moedas inseridas, colocas uma de 1 euro e uma de 50, a chama foi 80 ela devolve-te a de 50 se passas 1 euro ela ja não te da nenhuma, só usa as moedas introduzidas.

    Cumps [[]]
     
  17. TheRieper

    TheRieper Power Member

    Imagina que o homenzinho lá repara que até nem que o café. sempre pode ter o direito de recuperar o seu dinheiro. e a tua função dá para ver se pode devolver X num de Y moedas sim, isso tá bem, mas com if também funciona, sei porque no décimo fiz um programa semelhante e usei um if;)

    Mas o teu algoritmo tá eficiente, e agora sem aqueles erros tá bem a servir o objectivo;)

    Abraço
     
    Última edição: 18 de Outubro de 2007
  18. PJTuga

    PJTuga Power Member


    OFFTOPIC: Por acaso nao andas no ISEP??
    Eu estou no 1º ano em engenharia informática no ISEP, e esse exercicio faz parte de uma lista de 3 exercicios que tenho de entregar até dia 22 deste mês.

    Eu já programo há 3 anos, por isso para mim não é nada complicado resolver.


    Só estou a colocar este post, por curiosidade. para saber se também andas no ISEP.
    Se não, então os exercicios são exactamente iguais de uma universidade para outra

    Cumpz
     
  19. Só uma observação, este enunciado esta mal. O enunciado é o seguinte:

    Pretende-se simular o funcionamento de uma máquina de venda de café. Admite-se que o custo do café é de 40 cêntimos. A máquina só dá troco em moedas de 10, 20, 50 cêntimos. O troco deve ser calculado de forma a corresponder à menor quantidade possível de moedas. Simule a máquina de café e indique quantas moedas de cada valor, a máquina deverá dar de troco.

    Ou seja, a maquina aceita qualquer quantia de dinheiro, inclusive moedas de 1 e 2€
    Suponho que isto altere a resolução do problema.
    Se me pudessem ajudar a resolver isto eu também agradecia. Caí de paraquedas em Engª Informatica e nunca vi programação à frente
     
  20. legion

    legion Power Member

    Sinceramente assim é um bocado estúpido...imagina que o pessoal que lá vai só "mete" moedas de 1 e 2€...o troco serão as moedas de 10,20 e 50 cents...até aqui tudo bem...e quando acabarem as moedas de 10, 20 e 50 cêntimos?

    A máquina n dá troco?! Logo n se esqueçam de implementar esta função..a resolução depende do que vais utilizar para guardar as moedas que estão na máquina, para o troco..

    cump's
     

Partilhar esta Página