Aprendiz2050 0 Denunciar post Postado Outubro 7, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 7, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 7, 2009 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
Kandrade 7 Denunciar post Postado Outubro 8, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 8, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 8, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 8, 2009 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
Kandrade 7 Denunciar post Postado Outubro 8, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 9, 2009 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
Kandrade 7 Denunciar post Postado Outubro 9, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 10, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 11, 2009 velho fique atento as casas decimais. []s Compartilhar este post Link para o post Compartilhar em outros sites
Aprendiz2050 0 Denunciar post Postado Outubro 12, 2009 como assim, em que sentido? Já verifiquei e nao vi nada! Acho que coloquei os pontos nos seus devidos lugares. você viu alguma coisa de errado? Compartilhar este post Link para o post Compartilhar em outros sites
Aprendiz2050 0 Denunciar post Postado Outubro 12, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 13, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 15, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 16, 2009 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
Aprendiz2050 0 Denunciar post Postado Outubro 17, 2009 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
quitZAUMMM 18 Denunciar post Postado Outubro 20, 2009 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