algoritmo "3.17" // Função : Calcular quantos cartas voce pode enviar // Autor : Gustavo // Data : 28/9/2010 // Seção de Declarações // Obs: Parece um algoritmo grande devido à quantidade de comentarios e o tamanho do nome das variaveis. var dinheiro,precoEnvelope,precoSelo:real qtdeCartas,qtdeEnvelopes,qtdeSelos:real precoDuplaSeloEnvelope:real qtdeDuplaSeloEnvelope:real inicio escreval("Informe a quantia em dinheiro:") leia(dinheiro) escreval("Informe o preco do selo:") leia(precoSelo) escreval("Informe o preco do envelope:") leia(precoEnvelope) escreval("Informe a quantidade de envelopes que voce tem:") leia(qtdeEnvelopes) escreval("Informe a quantidade de selos que voce tem:") leia(qtdeSelos) se (qtdeEnvelopes0) entao //sobrou envelopes... //Bom... vamos imaginar que sobrou 10 envelopes e nenhum selo, preciso nivelar esse déficit... //Tenho dinheiro para comprar selos para selar os envelopes que sobrou? //Parece confuso eu multiplicar o preco do selo pela qtde de envelopes, mas é que a quantidade de envelopes que sobrou é a quantidade de selos que terei que comprar se ((precoSelo*qtdeEnvelopes)<=dinheiro) entao //ufa... ou sobrou dinheiro ou foi a quantia exata, enfim, resoloveu o défit de selos qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + qtdeEnvolopes // mais cartas seladas... dinheiro<- dinheiro - (precoSelo*qtdeEnvelopes) //debitando a bufunfa... qtdeEnvelope<- 0 senao //Bom... nao deu para comprar todos os selos.. //imaginemos que cada selo custe 1 real, tenho 5 reais sobrando e preciso selar 10 envelopes. É óbvil que só vou conseguir selar metade, ou seja, 0.5 dos envelopes. Essa porcentagem de envelopes vezes o preco de cada selo dá a quantidade de selos que posso comprar. qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + ((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes //Descontando dos envelopes que sobrou. qtdeEnvelopes<- qtdeEnvelopes - ((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes //debitando do dinheiro... dinheiro<- dinheiro - (((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes)*precoSelo fimse senao se (qtdeSelos>0) entao //sobrou selos... //Bom... vamos imaginar que sobrou 10 selos e nenhum envelope, preciso nivelar esse déficit... //Tenho dinheiro para comprar evelopes suficientes para usar os selos que sobrou? //Parece confuso eu multiplicar o preco do envelope pela qtde de selos que sobrou, é que precisarei comprar de envelopes a qtde de selos que sobrou. se ((precoEnvelope*qtdeSelos)<=dinheiro) entao //ufa... ou sobrou dinheiro ou foi a quantia exata, enfim, resoloveu o défit de envelopes qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + qtdeSelos // mais cartas seladas... dinheiro<- dinheiro - (precoEnvelope*qtdeSelos) //debitando a bufunfa... qtdeSelos<- 0 senao //Bom... nao deu para comprar todos os envelopes.. //imaginemos que cada envelope custe 1 real, tenho 5 reais sobrando e preciso usar meus 10 selos sobrando. É óbvil que só vou conseguir comprar metade dos envelopes necessarios, ou seja, 0.5 dos selos. Essa porcentagem de selo vezes o preco de cada envelope dá a quantidade de envelopes que posso comprar. qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + ((dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos //Descontando dos selos que sobrou. qtdeSelos<- qtdeSelos - (dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos //debitando do dinheiro... dinheiro<- dinheiro - ((dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos)*precoEnvelope fimse fimse fimse // No teste acima, veja que nao testei se sobrou os dois (selos e envelopes), pois é impossivel, pois se sobrou dos dois dari para fazer mais pares. (aula do joao, ou sobrou selo, ou e se somente selos, mas nao ambos) // Tambem nao testei se selos e envelopes foram zerados, pois se isso aconteceu, nao precisaria nivelar o deficit. // Bom, deficit's nivelado ou quase. //Agora vamos ver se sobrou dinheiro e ver quantos pares (1 envelope e 1 selo) posso comprar se (dinheiro>0) entao precoDuplaSeloEnvelope<- precoSelo+precoEnvelope escreval(dinheiro div precoDuplaSeloEnvelope) qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + (dinheiro div precoDuplaSeloEnvelope) // sem casas decimas, nao existe meia carta. //pronto, ja sabemos quantas cartas voce pode enviar usando somente o seu dinheiro. dinheiro<- dinheiro - (dinheiro div precoDuplaSeloEnvelope):5:2 fimse //escreval(98.89871 div 1) escreval("Voce pode enviar ",qtdeDuplaSeloEnvelope," cartas") escreval("Sobrou ",qtdeEnvelopes," envelopes") escreval("Sobrou ",qtdeSelos," selos") escreva("Sobrou R$ ",dinheiro:5:2) fimalgoritmo
quarta-feira, 27 de outubro de 2010
Exercicio 17 capitulo 3
Quantas cartas você pode enviar.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário