Exercicio. ajuda / explicaçao

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.
 
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 [[]]
 
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!!!
 
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!!
 
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:
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!!

Programei uma placa FPGA em liguagem de descrição de hardware (naquele caso Verilog), e uma parte do trabalho era essa :lol:
 
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 [[]]
 
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:
Boas.

Fiz em pseudo-codigo
dinheiro = 0
// Este while vai verificar se ja tem dinheiro sufeciente
while dinheiro < 40
uma correcção. esse while irá apenas funcionar enquanto o dinheiro for menor que 39. para ser até 40 tem que ser <= ;).
//Este segundo while lê o valor até ser introduzido um dos 3 valores
while moeda <> 10 and moeda <> 20 and moeda <> 50
este while está a contrariar a função da máquina que só aceita estas moedas, e estás a manda-la aceitar todas as moedas menos estas. terias que substituires os <> por = para que funcione correctamente.;)
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 [[]]


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:
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.
 
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


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.
 
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.

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:
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[[]]
 
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[[]]

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
 
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.
 
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 [[]]
 
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:
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!!


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
 
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!!

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
 
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

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
 
Back
Topo