• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

[Resolvido] Help [ Básico]

8 mensagens neste tópico

3. Escreva um programa que calcule o salário semanal de um trabalhador. As entradas são o número de horas usadas na semana e uma valorização da hora. Até 40 h/semana usa-se a valorização dada. Acima de 40h e até 60h há um bónus de 50% para essa horas. Acima de 60h há um bónus de 100% para essas horas. Use uma função para fazer os cálculos.

não entendo a parte " até 40 h /semana usa-se a valorização dada."

ele diz que as entradas ou seja os parâmetros de recepção são as horas e a valorização da hora.

não é melhor só as horas e depois dentro da função ter uns ifs que vejam se a hora for maior que 40 e menor que 60 bonus 50, acima de 60 bonus de 100% ?  ;)

:dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tipo seja x o valor que 1 pessoa recebe por hora

se trab ate 40h/semana

  ganhas x*40

se trab 40h ate 60h/semana

ganhas 40*x+ resto_horas*x*50%

se trab + de 60h/semana

  ganhas 40*x+ resto_das_ horas*x*100%

e claro recebe as horas e o valor por hora.. :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

supostamente o valor por hora é igual para todos, ele nem refere quanto se ganhar por hora para cada caso, o que varia é o bónus!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isto nao tem nada de mais....  :hmm:  deixo aki 1 codigo...k te vai ajudar  ;)


#include <stdio.h>


int main(){
int s=0, h=0, salario=0, resto=0;
  
    printf("Qual o valor de base por hora do trabalhador em causa?\n ");
    scanf(" %d",&s); 
    printf("Introduza o numero de horas que o trabalhador efectuou...\n");
    scanf(" %d",&h);


              
    if(h<=40 && h>0)
       salario=s*h;
    else
{
        if(h>40 && h<=60)
        {       resto=h-40;
                salario=s*40+( (resto*0.5*s)+ resto*s ) ;
        }
        else
        {  if( h>60)
		{       resto=h-60;
                   salario=s*(40)+ (resto*2*s);
		}
           else printf("ERRO NO NUMERO DE HORAS!!!");
	}
}         
  
    
    
    printf("O trabalhador em causa trablho %d horas \ne tem recebe de base %d euros/hora\n vai receber %d \n",h,s,salario);
   system("PAUSE");
     return 0;
   


}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#include <stdlib.h>

float calculo_salario( int x , float y)
{
if (x <=40 )
   return x * y;
if (x>40 && x <=60)
   return (x * y)+(x * y)*0.50 ;
else
   return (x * y) *2.0;
}

main()
{
  int num_horas;
  float ganho_hora=0.0;


  printf("Introduza o numero de Horas que trabalhou nesta semana\n");
  scanf("%d",&num_horas);
  printf("Qual o valor correspondente ao seu cargo por hora?\n");
  scanf("%f",&ganho_hora);
  printf("O seu salario >> %.2f\n\n\t",calculo_salario(num_horas,ganho_hora));
  system("PAUSE");
}

my way... ;) ;) :D:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#include <stdlib.h>

float calculo_salario( int x , float y)
{
if (x <=40 )
   return x * y;
if (x>40 && x <=60)
   return (x * y)+(x * y)*0.50 ;
else
   return (x * y) *2.0;
}

main()
{
  int num_horas;
  float ganho_hora=0.0;


  printf("Introduza o numero de Horas que trabalhou nesta semana\n");
  scanf("%d",&num_horas);
  printf("Qual o valor correspondente ao seu cargo por hora?\n");
  scanf("%f",&ganho_hora);
  printf("O seu salario >> %.2f\n\n\t",calculo_salario(num_horas,ganho_hora));
  system("PAUSE");
}

my way... ;):D:) :)

coloca o caso de h<=0 dar erro...e estas a calcular mal...pq tens k ver que so as horas extras tem bonus...  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#include <stdlib.h>

float calculo_salario( int x , float y)
{
if (x <=40 )
   return x * y;
if (x>40 && x <=60)
   return ((x-40) * y)*0.50+ (y * (x-(x-40)));
else
   return ((x-60) * y)*2+ (y * (x-(x-60)));
}

main()
{
  int num_horas;
  float ganho_hora=0.0;


  printf("Introduza o numero de Horas que trabalhou nesta semana\n");
  scanf("%d",&num_horas);
  printf("Qual o valor correspondente ao seu cargo por hora?\n");
  scanf("%f",&ganho_hora);
  printf("O seu salario >> %.2f\n\n\t",calculo_salario(num_horas,ganho_hora));
  system("PAUSE");
}

complety done ;)  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As fórmulas parecem-me um bocado confusas... Reparem que se h for maior que 60, o valor até 60 é fixo, e idem para o caso das 40 horas. Ou seja, basta apenas fazer uma subtracção, o resto são constantes, no que fiz respeito a horas.

Exemplo

double pay(int h, double v) {
        if (h>60)
                return (h-60)*2*v + (60-40)*1.5*v + 40*v; 
        if (h>40)
                return (h-40)*1.5*v + 40*v; 
        return h*v;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora