Ir ao conteúdo
  • Cadastre-se
Igorc.

Exercício de programação

Recommended Posts

Então galera, sou bem iniciante em programação, to tentando fazer um exercício de prog em portugol no VisualG e não estou conseguindo, se alguém puder me dar uma luz:

 

"Elabore um algoritmo que leia o CPF e o número de horas trabalhadas de um operário. Calcule o salário sabendo-se que ele ganha R$ 10,00 por hora. Quando o número de horas exceder a 50, calcule o excesso de pagamento armazenando-o em outra variável, caso contrário zerar tal variável. A hora excedente de trabalho vale R$ 20,00. No final do processamento mostre o salário total e o salário excedente do trabalhador."

 

Esse é o algoritmo que montei até então, o problema é que quando excede as 50 horas, ele está multiplicando todas as 50 horas por 20, ao invés de multiplicar só o excedente.

var
ht, salario_ht, salario_he, he: inteiro
inicio
escreval("digite a quantidade de horas trabalhadas")
leia(ht)
salario_ht<-ht*10
se ht>50 então
he<-ht
salario_he<-20*he
fimse
escreval("Seu salário mensal é:",salario_ht)
escreval("Suas horas extras totalizam:",salario_he)
fimalgoritmo

 

 

 

Agradeço desde já quem puder ajudar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igorc.

  seu código está bom mas precisa de mais alguns comandos para ter uma base para
fazer os cálculos então acrescentei mais uma variável para ver o número de horas
trabalhadas e modifiquei algumas linhas de lugar.
  experimente assim:

Algoritmo "calculo salario"
Var
ht,salario_ht,salario_he,he,nht: inteiro
inicio
  escreval("digite a quantidade de horas trabalhadas")
  leia(ht)
  nht:=ht
  se ht>50 então
    he<-(ht-50)
    nht:=50
    salario_he<-20*he
  fimse
  salario_ht:=nht*10
  escreval("Seu salário mensal é: R$",salario_ht,",00")
  escreval("Suas horas extras totalizam: R$",salario_he,",00")
Fimalgoritmo

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

A única coisa errada que vi foi na estrutura condicional:

se ht > 50 então
	he <- ht
	salario_he <- 20*he
fimse

Você está transferindo o valor de horas trabalhadas para a variável de horas extras, oquê não é certo, pois sabemos que horas extras é aquilo que excede as horas trabalhadas. O certo seria isso:

se ht > 50 então
	he <- ht - 50
	salario_he <- 20*he
fimse

Vamos pensar mais antes de postar alguma dúvida, hein, parceiro? 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Igorc., por favor, poste aqui o seu código "final" para analisarmos e também poder servir de base para outros usuários do Fórum.



Observações:

Lembrando que o enunciado tem REQUISITOS, e eles devem ser seguidos...

 

Em 17/09/2016 às 14:04, Igorc. disse:

"Elabore um algoritmo que leia o CPF e o número de horas trabalhadas de um operário. Calcule o salário sabendo-se que ele ganha R$ 10,00 por hora. Quando o número de horas exceder a 50, calcule o excesso de pagamento armazenando-o em outra variável, caso contrário zerar tal variável. A hora excedente de trabalho vale R$ 20,00. No final do processamento mostre o salário total e o salário excedente do trabalhador."


1) Não encontrei a parte que lê o CPF;

2) Se atente também no requisito de "zerar a variável" (para quê? não sei! o que importa que está pedindo). A princípio você poderia usar um se/senão;

3) Vale lembrar que o salário mensal NÃO inclui o salário excedente, ou seja, dá para por exemplo concluir que salário mensal vai ser no MÁXIMO R$500.

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi @Simon Viegas, peço perdão por não ter incluído a variável do CPF antes pois só estava fazendo um esboço.

 

Aqui vai meu algoritmo completo de acordo com os requisitos:

 

algoritmo "Cálculo Salário"
// Função :
// Autor :
// Data : 16/09/2016
// Seção de Declarações 
var
cpf: caracter
ht, salario_mensal, salario_ht, salario_he, he: inteiro
inicio
escreval("Digite seu CPF")
leia(cpf)
escreval("digite a quantidade de horas trabalhadas")
leia(ht)
salario_mensal<-ht*10
se ht>50 então
salario_mensal<-500
he<-ht - 50
salario_he<-20*he
senao
salario_he<-0
fimse
escreval("CPF do funcionário: ",cpf)
escreval("Seu salário mensal é: R$",salario_mensal, ",00")
escreval("Suas horas extras totalizam: R$",salario_he, ",00")
escreval("Total: R$", salario_mensal+salario_he, ",00")

fimalgoritmo

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela sugestão @Simon Viegas, já inclui a exibição do cpf.

 

Aproveitando a deixa, gostaria de saber se há alguma forma de limitar o número de caracteres numa variável. Por exemplo, limitar a variável do cpf a 11 caracteres.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Igorc..

 

Não sei dizer se dá para limitar a variável em si no VisuAlg. No Pascal, por exemplo, dá para fazer isso na declaração da variável, estipulando um tamanho de 1 a 255 se não me engano... (se não especificar fica com 255). No Java, sei também que também tem um recurso de "formatação", ou seja, que faz só aceitar o texto como desejado, como uma "mascara".. ex.: xxx.xxx.xxx-xx.

 

Então, de um modo geral, o VisuAlg é mais limitado, mas dá para usar outros recursos disponíveis e efetuar as verificações manualmente.

 

Dê uma olhada nesse material:
http://www.apoioinformatica.inf.br/produtos/item/30-as-funcoes-do-visualg-versao-2-0

 

Tem por exemplo o comando Compr() que pode ser útil.

Compr (c : caracter) : Retorna um inteiro contendo o comprimento (quantidade de caracteres) da expressão.

Daí, poderia usar um se para verificar se está com o tamanho desejado...

 

Tem outros comandos que se usar direitinho dá para fazer uma verificação completa... ou seja, verificar "caractere por caractere" e confirmar se está no formato desejado...

 

Resumindo:

- Com o Compr() dá para verificar o comprimento, como se tem 14 caracteres (ou 11 se for considerado só os números)

- Com outras funções, dá para analisar posição por posição e confirmar ou não se está no formato de CPF (número onde deve ter número, ponto onde deve ter ponto... etc).

- Se quiser ir mais longe, Inclusive, dá para verificar se o CPF é válido ou não (o CPF é baseado em um fórmula, onde os 2 últimos dígitos são chamados de "verificadores", e são gerados a partir dos 9 primeiros.. se o número cadastrado não bater, é considerado "CPF inválido". Na internet acha fácil a fórmula.)

 

 

No aguardo.

  • Curtir 1

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

×