Ir ao conteúdo
  • Cadastre-se

como funciona esse algoritmo usando SE


Posts recomendados

Um caixa eletrônico possui notas de 50,20,10,5,2 e moedas de 1 real

crie um algoritmo que entre com o valor a sacar e mostre a quantidade de cedulas correspondentes.

PS: conseguir fazer usado mod e div,mas, quero entender como faz usando o comando SE.Ja tentei varias vezes e dá erro.

var
n1,n2,n5,n10,n20,n50,valor:real
inicio
escreval("entre com o valor do saque:")
leia(valor)
se(valor>=50)então
n50<-valor-50
escreval("quantidade de notas: ",valor div 50)
senao
se(valor>=20)então
n20<- valor - 20
escreval("quatidade de notas: ",n50 div 20)
senao
se (valor>=10)então
n10<- valor - 10
escreval("quatidade de notas: ",n20 div 10)
senao
se(valor>=5)então
n5<-valor-5
escreval("quatidade de notas: ",n10 div 5)
senao
se(valor>=2)então
n2<- valor - 2
escreval("quatidade de notas: ",n5 div 2)
senao
se(valor>=1)então
n1<- valor - 1
escreval("quatidade de notas: ",n2 div 1)

fimse

fimse
fimalgoritmo

???  

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@respostadealgoritmos

   Não sei se seu código vai funcionar certo, parece que precisa de mais algumas linhas e comandos.

  Mas para funcionar com o comando se, do jeito que você postou, precisa colocar alguns fimse.

Apenas organizei ele melhor e coloquei alguns fimse, veja como ficou:

Algoritmo "caixa"
var
n1,n2,n5,n10,n20,n50,valor:real
inicio
escreval("entre com o valor do saque:")
leia(valor)
se(valor>=50)ENTÃO
  n50<-int(valor/50)
  escreval("quantidade de notas: ",n50)//valor div 50)
  escreval("e sobrou R$",valor-n50*50)                   
senao
  se(valor>=20)ENTÃO
    n20<- int(valor/20)
    escreval("quatidade de notas: ",n20)// div 20)
  senao
    se (valor>=10)ENTÃO
      n10<- valor/10
      escreval("quatidade de notas: ",n10)// div 10)
    senao
      se(valor>=5)ENTÃO
        n5<-valor/5
        escreval("quatidade de notas: ",n5)// div 5)
      senao
        se(valor>=2)ENTÃO
          n2<- valor/2
          escreval("quatidade de notas: ",n2)// div 2)
        senao
          se(valor>=1)ENTÃO
            n1<- valor/1
            escreval("quatidade de notas: ",n1)// div 1)
          fimse
        fimse
      fimse
    fimse
  fimse
fimse
fimalgoritmo
???  ¦++¤¤ªº«»

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Creio é o mesmo princípio usando DIV e MOD... a diferença é que com esses operadores a conta fica mais prática.

 

Você precisa calcular cada cédula deixando o resto para próxima... tira as de 50 que cabe, do resto tira as de 20, do resto tira as de 10.. por ai vai.

 

No aguardo.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Em 12/02/2017 às 02:05, Simon Viegas disse:

Olá.

 

Creio é o mesmo princípio usando DIV e MOD... a diferença é que com esses operadores a conta fica mais prática.

 

Você precisa calcular cada cédula deixando o resto para próxima... tira as de 50 que cabe, do resto tira as de 20, do resto tira as de 10.. por ai vai.

 

No aguardo.

o que  eu errei aqui?

o meu professor passou essa questao pra mim.so que ele quer,que o caixa tem um numero limitado de notas de 50,20,10,5,2 e moedas de 1

eu fiz como você disse tirando o resto que sobrava da divisão e passava para proxima nota,e  consegui limitar  a quantidade de notas,mas,o algoritmo nao ta dando certo e ja tentei quase tudo.:(

agradeço e gostaria que me desse uma luz para resolver esse problema.

var
n50,r50,t50,n20,r20,t20,n10,r10,t10,n5,r5,t5,n2,r2,t2,n1,r1,t1,valor:real
inicio
t20<-4 // quantidade de notas em cada caixa
t10<- 6
t5<- 2
t2<- 3
t1<- 8
escreval("entre com o saque:")
leia(valor)
n50<- valor div 50
    se(4>=n50)então
     escreval(" quatidade de notas de 50: ",n50)
     r50<-valor-n50*50 // resto da divisao
     escreval("quantidade de notas 50 que restou no caixa: ",4-n50)
     n20<-t50 div 20 // quantidade de notas de 20 necessarias
    senao
       se(r50>=20)então
       escreval("quatidade de notas de 20: ",n20)
       escreval("quantidade de notas 20 que restou no caixa: ",t20-n20)
       r20<-r50-n20*20
    senao
      se(r20>=10)então
      n10<- r20 div 10
      escreval("quatidade de notas de 10: ",n10)
      escreval("quantidade de notas 10 que restou no caixa: ",t10-n10)
      r10<- r20-n10*10
    senao
       se(r10>=5)então
       n5<- r10 div 5
       escreval("quatidade de notas de 5: ",n5)
       escreval("quantidade de notas 5 que restou no caixa: ",t5-n5)
       r5<- r10 - n5*5
   senao
      se(r5>=2)então
      n2<- r5 div 2
      escreval("quatidade de notas de 2: ",n2)
      escreval("quantidade de notas 2 que restou no caixa: ",t2-n2)
      r2<- r5-n2*2
   senao
     se(r2>=1)então
     n1<- r2 div 1
     escreval("quatidade de notas de 1: ",n1)
     escreval("quantidade de moedas 1 que restou no caixa: ",t1-n1)
     r1<- r2-n1*1
   senao
    se(r1>t1)então
    escreval("erro!,caixa sem notas/moedas para sastifazer o valor desejado.")
senao
                        fimse
                      fimse
                   fimse
                fimse
             fimse
          fimse
       fimse
fimalgoritmo

 

 

Link para o comentário
Compartilhar em outros sites

9 horas atrás, devair1010 disse:

@respostadealgoritmos

   parece que esse comando div não está funcionando. experimente colocar essa linha

aqui depois do leia(valor).:


n50<- int(valor/50)

 

obrigado deu certo.mas...

executei com F8 no visualg,e vi que ele lê apenas um bloco de instruçao e nao lê o proximo bloco.tentei tirando os fimse no fim do algoritmo e coloquei depois de cada bloco de instruçao, agr ele lê todas condiçoes e finaliza.

tipo se colocar um 220 ele so lê 50 e dá as 4 notas que preciso e sobra 20 então ele para e não lê o proximo bloco.

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
6 minutos atrás, respostadealgoritmos disse:

obrigado deu certo.mas...

executei com F8 no visualg,e vi que ele lê apenas um bloco de instruçao e nao lê o proximo bloco.tentei tirando os fimse no fim do algoritmo e coloquei depois de cada bloco de instruçao, agr ele lê todas condiçoes e finaliza.

tipo se colocar um 220 ele so lê 50 e dá as 4 notas que preciso e sobra 20 então ele para e não lê o proximo bloco.

 

 

 

Olá @respostadealgoritmos, por favor, poste o seu código atual para analisarmos.

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

var
n50,r50,t50,n20,r20,t20,n10,r10,t10,n5,r5,t5,n2,r2,t2,n1,r1,t1,valor:real
inicio
t50<- 7
t20<- 4 // quantidade de notas em cada caixa
t10<- 6
t5<- 8
t2<- 3
t1<- 8
escreval("entre com o saque:")
leia(valor)
n50<-(valor/50)
    se(t50>=n50)então
     escreval(" quatidade de notas de 50: ",n50)
     r50<-valor-n50*50 // resto da divisao
     escreval("quantidade de notas 50 que restou no caixa: ",t50-n50)
     n20<-t50 div 20 // quantidade de notas de 20 necessarias
    senao
  fimse
       se(r50>=20)então
       escreval("quatidade de notas de 20: ",n20)
       escreval("quantidade de notas 20 que restou no caixa: ",t20-n20)
       r20<-r50-n20*20
    senao
  fimse
      se(r20>=10)então
      n10<- r20 div 10
      escreval("quatidade de notas de 10: ",n10)
      escreval("quantidade de notas 10 que restou no caixa: ",t10-n10)
      r10<- r20-n10*10
    senao
  fimse
       se(r10>=5)então
       n5<- r10 div 5
       escreval("quatidade de notas de 5: ",n5)
       escreval("quantidade de notas 5 que restou no caixa: ",t5-n5)
       r5<- r10 - n5*5
   senao
fimse
      se(r5>=2)então
      n2<- r5 div 2
      escreval("quatidade de notas de 2: ",n2)
      escreval("quantidade de notas 2 que restou no caixa: ",t2-n2)
      r2<- r5-n2*2
   senao
fimse
     se(r2>=1)então
     n1<- r2 div 1
     escreval("quatidade de notas de 1: ",n1)
     escreval("quantidade de moedas 1 que restou no caixa: ",t1-n1)
     r1<- r2-n1*1
   senao
    se(r1>t1)então
    escreval("erro!,caixa sem notas/moedas para sastifazer o valor desejado.")
senao
                        fimse
                        fimse
fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @respostadealgoritmos, vamos lá:

 

Spoiler
2 horas atrás, respostadealgoritmos disse:


var
n50,r50,t50,n20,r20,t20,n10,r10,t10,n5,r5,t5,n2,r2,t2,n1,r1,t1,valor:real
inicio
t50<- 7
t20<- 4 // quantidade de notas em cada caixa
t10<- 6
t5<- 8
t2<- 3
t1<- 8
escreval("entre com o saque:")
leia(valor)
n50<-(valor/50)
    se(t50>=n50)então
     escreval(" quatidade de notas de 50: ",n50)
     r50<-valor-n50*50 // resto da divisao
     escreval("quantidade de notas 50 que restou no caixa: ",t50-n50)
     n20<-t50 div 20 // quantidade de notas de 20 necessarias
    senao
  fimse
       se(r50>=20)então
       escreval("quatidade de notas de 20: ",n20)
       escreval("quantidade de notas 20 que restou no caixa: ",t20-n20)
       r20<-r50-n20*20
    senao
  fimse
      se(r20>=10)então
      n10<- r20 div 10
      escreval("quatidade de notas de 10: ",n10)
      escreval("quantidade de notas 10 que restou no caixa: ",t10-n10)
      r10<- r20-n10*10
    senao
  fimse
       se(r10>=5)então
       n5<- r10 div 5
       escreval("quatidade de notas de 5: ",n5)
       escreval("quantidade de notas 5 que restou no caixa: ",t5-n5)
       r5<- r10 - n5*5
   senao
fimse
      se(r5>=2)então
      n2<- r5 div 2
      escreval("quatidade de notas de 2: ",n2)
      escreval("quantidade de notas 2 que restou no caixa: ",t2-n2)
      r2<- r5-n2*2
   senao
fimse
     se(r2>=1)então
     n1<- r2 div 1
     escreval("quatidade de notas de 1: ",n1)
     escreval("quantidade de moedas 1 que restou no caixa: ",t1-n1)
     r1<- r2-n1*1
   senao
    se(r1>t1)então
    escreval("erro!,caixa sem notas/moedas para sastifazer o valor desejado.")
senao
                        fimse
                        fimse
fimalgoritmo

 

 

 

1) ESTRUTURA SE/SENÃO

Você está colocando os fimse fora do lugar. Vide primeira resposta do @devair1010.

 

2) QUANTIDADE DE NOTAS
Para pegar a quantidade, você está utilizando uma divisão, mas na verdade você precisa da parte inteira. Vide segunda resposta @devair1010.

 

3) CÁLCULO DO RESTO

Pelo que eu entendi, você está utilizando "um resto para cada nota", mas o "resto" é uma coisa só... ou seja, você tem um montante só, e vai tirando os valores de dele.

 

***

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

@respostadealgoritmos

o comando se senão funciona assim : se a comparação for verdadeira ele executa
tudo que está entre o se e o senão ou fimse e ignora o que está entre o senão e o fimse;
Então aí no seu código ele está executando o primeiro bloco porque a comparação é

verdadeira e ignora o segundo bloco, e aí termina o programa.
  Agora para ver a quantidade de notas:  Depois de pegar as notas de 50, você
pega o resto que no seu código é r50 e se r50 for maior que zero  divide por 20,
para pegar a  quantidade de notas de 20, e aí pega o resto dessa divisão e faz
o mesmo com as outras notas de 10, 5, 2, 1 ;  

   E você precisa colocar aquele comando int antes do (valor/50), isso para pegar só a parte inteira da divisão.
 E olha a indentação do código para ficar mais fácil de entender. Coloque o 
se  senão  e fimse na mesma coluna e dê dois espaços ou tab no começo das linhas dentro
destes comandos.
   E quando colocar o comando ENTÃO  escreva com letras maiúsculas e coloque til. 

porque quando você posta o código com o então minúsculo, aí a gente copia e cola ele no visualg, ele dá erro, no entanto se for maiúsculo e com TiL ele não dá erro.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!