Ir ao conteúdo
  • Cadastre-se
Vinezof2

VisualG Variáveis sendo lidas duas vezes

Recommended Posts

Olá, estou fazendo um curso de informática e neste curso foi proposta uma atividade de desenvolver um algoritmo para dar bônus a 4 funcionários dependendo dos dependentes desse funcionário, enfim, fiz o programa e ele funcionou o problema é que o cônjuge pode ser um dependente então eu fiz uma condição para que se o funcionário fosse solteiro ele não pudesse receber o bônus do cônjuge, mas sempre que o funcionário é solteiro a idade dos dependentes é lida duas vezes, não altera o fluxo do programa simplesmente muda o valor da variável, mas considero isso um erro e li e re-li o algoritmo e não consegui resolver isso.

 

Parte do algoritmo que contém o erro:

enquanto (quant_dependentes>contador) faca
      repita
         escreva ("Tipo do Dependente  (C= Cônjuge | X= Outros): ")
         leia (tipo_dependente)
      ate (tipo_dependente="C") ou (tipo_dependente="X")
      se (tipo_dependente="C") e (estado_civil="C") então
         enquanto (contador_conjuge<1) faca
            escreva ("Idade do Cônjuge: ")
            leia (idade_conjuge)
            bonus_funcionario1 := bonus_funcionario1 + 20
            contador_conjuge := contador_conjuge + 1
            contador := contador + 1
         fimenquanto
      senao
         repita
            escreva ("Idade do Dependente: ")
            leia (idade_dependente)
         ate (idade_dependente>0)
         contador := contador + 1
         se (idade_dependente<=17) então
            bonus_funcionario1 := bonus_funcionario1 + 15
         fimse
      fimse
   fimenquanto

  

Algoritmo inteiro:

algoritmo "Bônus Funcionário"
// Função : Dar bônus aos funcionários
// Autor :  João Vitor de A. Vinezof
// Data : 10/11/2017
// Seção de Declarações 
var
   funcionario1, funcionario2, funcionario3, funcionario4: literal
   idade_conjuge, dependente, tipo_dependente, idade_dependente, estado_civil: literal
   bonus_funcionario1, bonus_funcionario2, bonus_funcionario3, bonus_funcionario4: inteiro
   contador, contador_conjuge, quant_dependentes: inteiro
   
inicio
// Seção de Comandos
//Definindo os valores dos acumuladores e contadores
   bonus_funcionario1 := 40
   bonus_funcionario2 := 40
   bonus_funcionario3 := 40
   bonus_funcionario4 := 40
   contador := 0
   contador_conjuge := 0
//Funcionário 01
   escreval ("Dados do funcionário 1:")
   escreva ("Nome: ")
   leia (funcionario1)
   repita
      escreva ("Estado Civil  (C= Casado | S= Solteiro): ")
      leia (estado_civil)
   ate (estado_civil="C") ou (estado_civil="S")
   repita
      escreva ("Possuí Dependentes?  (N= Não | S= Sim): ")
      leia (dependente)
   ate (dependente="N") ou (dependente="S")
   se (dependente="S") então
      repita
         escreva ("Quantos? ")
         leia (quant_dependentes)
      ate (quant_dependentes>0)
   fimse
   enquanto (quant_dependentes>contador) faca
      repita
         escreva ("Tipo do Dependente  (C= Cônjuge | X= Outros): ")
         leia (tipo_dependente)
      ate (tipo_dependente="C") ou (tipo_dependente="X")
      se (tipo_dependente="C") e (estado_civil="C") então
         enquanto (contador_conjuge<1) faca
            escreva ("Idade do Cônjuge: ")
            leia (idade_conjuge)
            bonus_funcionario1 := bonus_funcionario1 + 20
            contador_conjuge := contador_conjuge + 1
            contador := contador + 1
         fimenquanto
      senao
         repita
            escreva ("Idade do Dependente: ")
            leia (idade_dependente)
         ate (idade_dependente>0)
         contador := contador + 1
         se (idade_dependente<=17) então
            bonus_funcionario1 := bonus_funcionario1 + 15
         fimse
      fimse
   fimenquanto
   escreval
   contador := 0
   contador_conjuge := 0
   quant_dependentes := 0
//Funcionário 02
   escreval ("Dados do Funcionário 2:")
   escreva ("Nome: ")
   leia (funcionario2)
   repita
      escreva ("Estado Civil  (C= Casado | S= Solteiro): ")
      leia (estado_civil)
   ate (estado_civil="C") ou (estado_civil="S")
   repita
      escreva ("Possuí Dependentes?  (N= Não | S= Sim): ")
      leia (dependente)
   ate (dependente="N") ou (dependente="S")
   se (dependente="S") então
      repita
         escreval ("Quantos? ")
         leia (quant_dependentes)
      ate (quant_dependentes>0)
   fimse
   enquanto (quant_dependentes>contador) faca
      repita
         escreva ("Tipo do dependente (C= Cônjuge | X= Outros): ")
         leia (tipo_dependente)
      ate (tipo_dependente="C") ou (tipo_dependente="X")
      se (tipo_dependente="C") e (estado_civil="C") então
         enquanto (contador_conjuge<1) faca
            repita
               escreva ("Idade do Cônjuge: ")
               leia (idade_conjuge)
            ate (idade_conjuge>0)
            bonus_funcionario2 := bonus_funcionario + 20
            contador_conjuge := contador_conjuge + 1
            contador := contador + 1
         fimenquanto
      senao
         repita
            escreva ("Idade do Dependente: ")
            leia (idade_dependente)
         ate (idade_dependente>0)
         contador := contador + 1
         se (idade_dependente<=17) então
            bonus_funcionario2 := bonus_funcionario2 + 15
         fimse
      fimse
   fimenquanto
   contador := 0
   contador_conjuge := 0
   quant_dependentes := 0
   escreval
//Funcionário 03
   escreval ("Dados do Funcionário 3: ")
   escreva ("Nome: ")
   leia (funcionario3)
   repita
      escreva ("Estado Civil  (C= Cônjuge | S= Solteiro): ")
      leia (estado_civil)
   ate (estado_civil="C") ou (estado_civil="S")
   repita
      escreva ("Possuí Dependentes?  (N= Não | S= Sim): ")
      leia (dependente)
   ate (dependente="N") ou (dependente="S")
   se (dependente="S") então
      repita
         escreva ("Quantos? ")
         leia (quant_dependentes)
      ate (quant_dependentes>0)
   fimse
   enquanto (quant_dependentes>contador) faca
      repita
         escreva ("Tipo do Dependente  (C= Cônjuge | X= Outros): ")
         leia (tipo_dependente)
      ate (tipo_dependente="C") ou (tipo_dependente="X")
      se (tipo_dependente="C") e (estado_civil="C") então
         enquanto (contador_conjuge<1) faca
            repita
               escreva ("Idade do Cônjuge: ")
               leia (idade_conjuge)
            ate (idade_conjuge>0)
            bonus_funcionario3 := bonus_funcionario3 + 20
            contador_conjuge := contador_conjuge + 1
            contador := contador + 1
         fimenquanto
      senao
         repita
            escreva ("Idade do Dependente: ")
            leia (idade_dependente)
         ate (idade_dependente>0)
         contador := contador + 1
         se (idade_dependente<=17) então
            bonus_funcionario3 := bonus_funcionario3 + 15
         fimse
      fimse
   fimenquanto
   contador := 0
   contador_conjuge := 0
   quant_dependentes := 0
   escreval
//Funcionário 04
   escreval ("Dados do Funcionário 4:")
   escreva ("Nome: ")
   leia (funcionario4)
   repita
      escreva ("Estado Civil  (C= Casado | S= Solteiro): ")
      leia (estado_civil)
   ate (estado_civil="C") ou (estado_civil="S")
   repita
      escreva ("Possuí Dependentes?  (N= Não | S= Sim): ")
      leia (dependente)
   ate (dependente="N") ou (dependente="S")
   se (dependente="S") então
      repita
         escreva ("Quantos? ")
         leia (quant_dependentes)
      ate (quant_dependentes>0)
   fimse
   enquanto (quant_dependentes>contador) faca
      repita
         escreva ("Tipo do Dependente  (C= Cônjuge | X= Outros): ")
         leia (tipo_dependente)
      ate (tipo_dependente="C") ou (tipo_dependente="X")
      se (tipo_dependente="C") e (estado_civil="C") então
         enquanto (contador_conjuge<1) faca
            repita
               escreva ("Idade do Cônjuge: ")
               leia (idade_conjuge)
            ate (idade_conjuge>0)
            bonus_funcionario4 := bonus_funcionario4 + 20
            contador_conjuge := contador_conjuge + 1
            contador := contador + 1
         fimenquanto
      senao
         repita
            escreva ("Idade do Dependente: ")
            leia (idade_dependente)
         ate (idade_dependente>0)
         contador := contador + 1
         se (idade_dependente<=17) então
            bonus_funcionario4 := bonus_funcionario4 + 15
         fimse
      fimse
   fimenquanto
   limpatela
   escreval (funcionario1,": Benefício de R$",bonus_funcionario1)
   escreval (funcionario2,": Benefício de: R$",bonus_funcionario2)
   escreval (funcionario3,": Benefício de: R$",bonus_funcionario3)
   escreval (funcionario4,": Benefício de: R$",bonus_funcionario4)
fimalgoritmo

 

Desde já, Obrigado.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vinezof2    ele está lendo essa variável dependendo de quantos dependentes tem ,  se quando ele perguntar quantos dependentes, você  colocar 2 então ele vai ler duas vezes pois serão dois dependentes, mas se você colocar que é um dependente então ele não repetirá e segue com o programa .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×