Ir ao conteúdo
  • Cadastre-se

Exercício de programação


Posts recomendados

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
Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
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...