Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aprendiz2050

Calculo do Salário Bruto- Visualg

Recommended Posts

Olá colegas,

 

sou iniciante no VISUALG e estou tentando fazer um programinha que leia o Salário bruto do funcionário. O problema é que o meu código dá como se o salário fosse igual a zero. PQ? Gostaria também, se alguém tem uma opinião para eu melhorar o programa na questão de escolha da carga horária( 6 ou 8 horas). Obrigado pela atenção.

 

var
nomfunc:caracter
idade,numfilhos:inteiro
valhrtrab:real
totaldiastrabmes:inteiro
d:caracter
n:caracter
turdiario:caracter
totdiastrabmes: inteiro
qtdhrdia: inteiro
salbruto: real

inicio
escreva("Digite o nome do funcionário: ")
leia(nomfunc)
escreva("Digite a idade do funcionário: ")
leia(idade)
escreva("Digite o número de filhos: ")
leia(numfilhos)
escreva("Digite quantos dias trabalhados no mês: ")
leia(totdiastrabmes)
escreva("Regime de horas trabalhas por dia. 6 ou 8 horas?: ")
leia(qtdhrdia)
escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)
enquanto turdiario = "D" e "N" faca
   se turdiario = "D" entao
      valhrtrab:= 2.5
      se turdiario = "N" entao
         valhrtrab:= 3.5
      fimse
   fimse
fimenquanto
salbruto:=(valhrtrab * qtdhrdia * totdiastrabmes)
escreva("O salario bruto é: ",salbruto)
fimalgoritmo
fimse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma coisa se você roda o programa e usa ele com o capslock ligado o valor ainda é 0 ?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma coisa se você roda o programa e usa ele com o capslock ligado o valor ainda é 0 ?

 

[]s

 

Mestre,

 

com o CASPLOCK desligado é a mesma situação. você acha que tem outra coisa errada na formula tipo essa condição SE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui:

 

enquanto turdiario = "D" e "N"

Quando turdiario será igual a "D" e "N" ao mesmo tempo?

 

Viu o problema?

 

Veja se com a condição ou resolve o problema:

 

enquanto (turdiario = "D") ou (turdiario = "N") faca

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui:

 

enquanto turdiario = "D" e "N"

Quando turdiario será igual a "D" e "N" ao mesmo tempo?

 

Viu o problema?

 

Veja se com a condição ou resolve o problema:

 

enquanto (turdiario = "D") ou (turdiario = "N") faca

Mestre,

 

coloquei

enquanto turdiario = "D" ou "N" faca (deu problema de erro de sintaxe, mas o raciocínio é esse mesmo!!)

Agora, quando coloquei o teu código código o programa nao rodou, parou na escolha do do turno diurno ou noturno. O que será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio eu, q seja algo com parenteses e o modo que a linguagem interpreta, tente de alguma dessas maneiras:

 

enquanto ((turdiario = "D") ou (turdiario = "N")) faca

ou

enquanto (turdiario = "D" ou turdiario = "N") faca

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado colegas pela atenção,

 

consegui a resposta aki mesmo no site pelo um programa de calculadora com a Função SE. Mas sei que existe a possibilidade pela função ENQUANTO. Aproveitando a oportunidade, gostaria de saber se existe uma maneira caso o D ou N forem digitados incorretamente, o programa dizer que o turno de trabalho está errado e que é para corrigir o mesmo sem sair do programa. Além do mais, pelo exemplo que vou postar, ele acusa o turno incorreto mas le o salario bruto como 0. Agradeço desde já.

 

Resposta encontrada até o momento..

inicio
escreva("Digite o nome do funcionário: ")
leia(nomfunc)
escreva("Digite a idade do funcionário: ")
leia(idade)
escreva("Digite o número de filhos: ")
leia(numfilhos)
escreva("Digite quantos dias trabalhados no mês: ")
leia(totdiastrabmes)
escreva("Regime de horas trabalhas por dia. 6 ou 8 horas?: ")
leia(qtdhrdia)
escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)
se ((turdiario <> "D") e (turdiario <> "N")) entao
ecreval(Turno Incorreto!)
fimse
   se turdiario = "D" entao
      valhrtrab:= 2.5
      senao
      se turdiario = "N" entao
         valhrtrab:= 3.5
      fimse
   fimse

salbruto:=(valhrtrab * qtdhrdia * totdiastrabmes)
escreva("O salario bruto é: ",salbruto)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Visualg tem uma sintaxe um pouco diferente.

Eu vou tentar passar a idéia:

 

escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)

enquanto((turdiario <> "D") e (turdiario <> "N") e (turdiario <> "S")) entao    
    escreva("Digite novamente o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
    leia(turdiario)
fim_enquanto

Se o turno lido na primeira for diferente de D, N ou S ele entrará no laço e só sairá quando um dos tres valores for lido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Visualg tem uma sintaxe um pouco diferente.

Eu vou tentar passar a idéia:

 

escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)

enquanto((turdiario <> "D") e (turdiario <> "N") e (turdiario <> "S")) entao    
    escreva("Digite novamente o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
    leia(turdiario)
fim_enquanto

Se o turno lido na primeira for diferente de D, N ou S ele entrará no laço e só sairá quando um dos tres valores for lido.

 

Parceiro,

 

No caso em questão nao existe um erro com a expressão <> "S"? , pois o "S" é justamente para pessoa sair do laço. você tem alguma opinião com a utilização da função Repita - Até? . Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parceiro,

 

No caso em questão nao existe um erro com a expressão <> "S"? , pois o "S" é justamente para pessoa sair do laço.

 

A questão é que voce ai só está lendo um valor válido. "S" também é um valor válido.

Agora voce tem que tratar isso. Não sei se tem uma função que indique o termino de algoritmo nessa linguagem.

 

 

você tem alguma opinião com a utilização da função Repita - Até? . Obrigado!

 

No caso do algoritmo acima não ia funcionar, porque voce tem uma entrada antes do laço.

Antes de entrar no laço ele verifica se a primeira entrada é válida, se for ele não entra no laço. Se voce colocar um repita até ele vai entrar no laço e ler novamente independente da primeira entrada.

 

Se quiser usá-lo, tire a primeira entrada e faça todos as entradas dentro de um repita....até.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parceiro consegui resolver a questão do turno... agora estou encrencado com o FGTS e o INNS. quando jogo praticamente todos os valores um (para o calculo ser simples e eu verificar a conta, ele dá OK)exemplo copiado do visualg

 

Início da execução

Digite o nome do funcionário: aprendiz

Digite a idade do funcionário: 1

Digite o número de filhos: 0

Digite quantos dias trabalhados no mês: 1

Regime de horas trabalhadas por dia. 6 ou 8 horas?: 6

Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: d

O salario bruto é: 18

O Total do Depósito do FGTS é: 1.44

O depósito do INSS é: 1.44

Fim da execução.

 

mas quando modifico algumas coisas ele dá calculos absurdos como:

 

Início da execução

Digite o nome do funcionário: aprendiz

Digite a idade do funcionário: 52

Digite o número de filhos: 2

Digite quantos dias trabalhados no mês: 1

Regime de horas trabalhadas por dia. 6 ou 8 horas?: 6

Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: d

O salario bruto é: 20.592

O Total do Depósito do FGTS é: 1.64736

O depósito do INSS é: 1.64736

Fim da execução.

 

Como você pode ver, o meu FGTS e INSS é maior que o meu salário bruto (quem dera que fosse assim :) )

você sabe pq?

ai vai o código utilizado:

 

var
nomfunc:caracter
idade,numfilhos:inteiro
valhrtrab:real
totaldiastrabmes:inteiro
d:caracter
n:caracter
turdiario:caracter
totdiastrabmes: inteiro
qtdhrdia: inteiro
salbruto: real
inss: real
fgts:real
inicio
escreva("Digite o nome do funcionário: ")
leia(nomfunc)
escreva("Digite a idade do funcionário: ")
leia(idade)
escreva("Digite o número de filhos: ")
leia(numfilhos)
escreva("Digite quantos dias trabalhados no mês: ")
leia(totdiastrabmes)
repita
   escreva("Regime de horas trabalhadas por dia. 6 ou 8 horas?: ")
   leia(qtdhrdia)
ate ((qtdhrdia = 6) ou (qtdhrdia = 8))
escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)
se ((turdiario <> "D") e (turdiario <> "N")) entao
   escreval("Programa Finalizado!!")
fimse
se ((turdiario = "D") e (idade <=50)) entao
   valhrtrab:= 3
senao
   se ((turdiario = "D") e (idade > 50)) entao
      valhrtrab:= 3 + (3*0.10)
   fimse
   se ((turdiario = "N") e (idade <=50)) entao
      valhrtrab:= 4
   senao
      se ((turdiario = "N") e (idade > 50)) entao
         valhrtrab:= 4 + (4*0.10)
      fimse
   fimse
fimse
salbruto:= (valhrtrab * qtdhrdia * totdiastrabmes)+ (valhrtrab * qtdhrdia * totdiastrabmes * numfilhos * 0.02)
fgts:= salbruto*0.08
se salbruto <= 965.67 entao
   inss:= salbruto*0.08
senao
   se ((salbruto >=  965.68) e (salbruto <= 1609.45)) entao
      inss:= salbruto*0.09
   senao
      se ((salbruto >=  1.609.46) e (salbruto <= 3218.90)) entao
         inss:= salbruto*0.11
      fimse
   fimse
fimse
escreval("O salario bruto é: ",salbruto)
escreval( "O Total do Depósito do FGTS é: ",fgts)
escreva( "O depósito do INSS é: ", inss)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei as poercentagens dividivas por cem para ver se nao era erro de virgula e tirei o calculo do inss, mas o erro persiste com calculos absurdos. PQ?

var
idade,numfilhos,qtdhrdia,porcento:inteiro
totdiastrabmes: inteiro
salbruto,valhrtrab,salbrutoaumento,fgts : real
respaumento,nomfunc,d,n,turdiario: caracter

inicio
escreva("Digite o nome do funcionário: ")
leia(nomfunc)
escreva("Digite a idade do funcionário: ")
leia(idade)
escreva("Digite o número de filhos: ")
leia(numfilhos)
escreva("Digite quantos dias trabalhados no mês: ")
leia(totdiastrabmes)
repita
   escreva("Regime de horas trabalhadas por dia. 6 ou 8 horas?: ")
   leia(qtdhrdia)
ate ((qtdhrdia = 6) ou (qtdhrdia = 8))
escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)
se ((turdiario <> "D") e (turdiario <> "N")) entao
   escreval("Programa Finalizado!!")
fimse
se ((turdiario = "D") e (idade <=50)) entao
   valhrtrab:= 3
senao
   se ((turdiario = "D") e (idade > 50)) entao
      valhrtrab:= 3 + (3*(10/100))
   fimse
   se ((turdiario = "N") e (idade <=50)) entao
      valhrtrab:= 4
   senao
      se ((turdiario = "N") e (idade > 50)) entao
         valhrtrab:= 4 + (4*(10/100))
      fimse
   fimse
fimse
salbruto:= (valhrtrab * qtdhrdia * totdiastrabmes)+ (valhrtrab * qtdhrdia * totdiastrabmes * numfilhos * (2/100))
Repita
   escreva( "Houve Aumento Salarial? Sim ou Não?")
   leia(respaumento)
ate ((respaumento = "S") ou (respaumento = "N"))
se respaumento = "S" entao
   escreva( "De quantos por cento foi o aumento? ")
   leia(porcento)
   salbruto:= salbruto + salbruto*(porcento/100)
senao
   se respaumento = "N" entao
      salbruto:= salbruto
   fimse
fimse
fgts:= (8/100)*salbruto
escreval("O salario bruto é: ",salbruto)
escreva("O total do FGTS é: ", fgts)
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vamos fazer assim, vamos iniciar do zero ok? pra ficar + facil de entender..

poste todo o enunciado do problema, (como ele deverá funcionar)!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá...

 

ler:

nome do funcionário,

idade,

número de filhos,

horário de trabalho,

d-diurno,

n-noturno,

 

valor da hora de trabalho,

turno diário (em horas)

total de dias trabalhado por mês

 

Calcular e apresentar:

1-Salário bruto por mês

2-Salário liquido do mês considerando:

3- se o empregado tiver mais de 50 anos, crescer 10% por hora do trabalho.

4-Acrescentar 2% ao salário bruto para cada filho.

5-Calcular 8% de FGTS (não descontado)

Calcular o desconto do INSS. De acordo com a tabela a seguir :

 

até R$ 965,67 10,00 %

de R$ 965,68 a R$ 1.609,45 20,00 %

de R$ 1.609,46 até R$ 3.218,90 50,00%

acima de 3218,90 100%

 

aki está o código

var
idade,numfilhos,qtdhrdia,porcento:inteiro
totdiastrabmes: inteiro
salbruto,valhrtrab,salbrutoaumento,fgts,inss : real
respaumento,nomfunc,d,n,turdiario: caracter

inicio
escreva("Digite o nome do funcionário: ")
leia(nomfunc)
escreva("Digite a idade do funcionário: ")
leia(idade)
escreva("Digite o número de filhos: ")
leia(numfilhos)
escreva("Digite quantos dias trabalhados no mês: ")
leia(totdiastrabmes)
repita
   escreva("Regime de horas trabalhadas por dia. 6 ou 8 horas?: ")
   leia(qtdhrdia)
ate ((qtdhrdia = 6) ou (qtdhrdia = 8))
escreva("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: ")
leia(turdiario)
se ((turdiario <> "D") e (turdiario <> "N")) entao
   escreval("Programa Finalizado!!")
fimse
se ((turdiario = "D") e (idade <=50)) entao
   valhrtrab:= 100000
senao
   se ((turdiario = "D") e (idade > 50)) entao
      valhrtrab:= 3 + (3*0.10)
      se ((turdiario = "N") e (idade <=50)) entao
         valhrtrab:= 4
      senao
         se ((turdiario = "N") e (idade > 50)) entao
            valhrtrab:= 4 + (4*0.10)
         fimse
      fimse
   fimse
fimse
salbruto:= (valhrtrab * qtdhrdia * totdiastrabmes)+ (valhrtrab * qtdhrdia * totdiastrabmes * numfilhos * 0.02)
Repita
   escreva( "Houve Aumento Salarial? Sim ou Não?")
   leia(respaumento)
ate ((respaumento = "S") ou (respaumento = "N"))
se respaumento = "S" entao
   escreva( "De quantos por cento foi o aumento? ")
   leia(porcento)
   salbruto:= salbruto + salbruto*(porcento/100)
senao
   se respaumento = "N" entao
      salbruto:= salbruto
   fimse
fimse
fgts:=0.10*salbruto
se salbruto <= 965.67 entao
   inss:= 0.10*salbruto
senao
   se salbruto >= 965.68 e salbruto <= 1609.45 entao
      inss:= 0.20*salbruto
   senao
      se salbruto >= 1609.46 e salbruto<= 3218.90 entao
         inss:= 0.50*salbruto
      senao
         se salbruto>= 3218.90 entao
            inss:=1*salbruto
         fimse
      fimse
   fimse
fimse
escreval("O alario bruto é: ",salbruto)
escreval("O total do FGTS é: ", fgts)
escreva("O total do INNS é: ", inss)
fimalgoritmo

ele dá um erro assim

o VISUALG esperava encontrar a palavra entao

se salbruto >= 965.68 e salbruto <= 1609.45 entao

 

um outro erro é, por mais que eu tente aumentar a hora trabalhada do trabalhador, ele retorna o salário bruto com o

valor de 540. PQ?

 

Como é feito a leitura das casas decimais nesse programa,como porcentagens 10 % e este numero 1.500,45?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vamos fazer as leituras:

 

Escreva ("Funcionario: ");
Leia (Nome_Func);
Escreva ("Idade: ");
Leia (Idade);
Escreva ("Nº de Filhos: ");
Leia (N_Filhos);
Escreva ("Horario de Trabalho ('D' ou 'N'): ");
Leia (Turno);
Escreva ("Valor da hora: ");
Leia (Valor_Hora);
Escreva ("Horas por dia: ");
Leia (Horas_Dia);
Escreva ("Total de dias: ");
Leia (Dias);

Beleza primeira parte ok!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vamos fazer as leituras:

 

Escreva ("Funcionario: ");
Leia (Nome_Func);
Escreva ("Idade: ");
Leia (Idade);
Escreva ("Nº de Filhos: ");
Leia (N_Filhos);
Escreva ("Horario de Trabalho ('D' ou 'N'): ");
Leia (Turno);
Escreva ("Valor da hora: ");
Leia (Valor_Hora);
Escreva ("Horas por dia: ");
Leia (Horas_Dia);
Escreva ("Total de dias: ");
Leia (Dias);

Beleza primeira parte ok!

E agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Escreva como é o calculo do salario bruto.

+ escreva algo assim pra gente desenvolver juntos:

pega o salario, acrescenta 'tanto', faz vezes o numero de filhos..

foi apenas um exemplo, é que eu n sei msm a forma de calcular entaum da uma explicada ai.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.