Jump to content

[Resolvido] Help [ Básico]


Gurzi
 Share

Recommended Posts

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:

Link to comment
Share on other sites

saramgsilva

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:

Link to comment
Share on other sites

saramgsilva

isto nao tem nada de mais....  ?  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;
   


}

Link to comment
Share on other 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... ;) ;) 😄:)

Link to comment
Share on other sites

saramgsilva

#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... ;)😄:) :)

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

Link to comment
Share on other 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 ;)  ?

Link to comment
Share on other 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;
}
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.