Jump to content
Gurzi

[Resolvido] Help [ Básico]

Recommended Posts

Gurzi

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:

Share this post


Link to post
Share on other sites
Gurzi

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!

Share this post


Link to post
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;
   


}

Share this post


Link to post
Share on other sites
Gurzi

#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:)

Share this post


Link to post
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... ;):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...  ;)

Share this post


Link to post
Share on other sites
Gurzi

#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 ;)  😳

Share this post


Link to post
Share on other sites
motherFFH

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;
}

Share this post


Link to post
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

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