Calculando o pagamento semanal. Uma empresa paga a seus funcionários como gerentes (que recebem um salário semanal fixo), trabalhadores por hora (que recebem um salário fixo por hora até as 40 primeiras horas de trabalho e ‘hora e meia’ — ou seja, 1,5 vez o salário por hora — para horas extras trabalhadas), trabalhadores comissionados (que recebem R$ 250,00 mais 5,7 por cento de suas vendas brutas semanais) ou trabalhadores por unidade (que recebem um valor fixo para cada um dos itens que eles produzem — cada trabalhador por unidade nessa empresa trabalha apenas em um tipo de item). Escreva um programa que calcule o pagamento semanal de cada empregado. Você não sabe o número de empregados com antecedência. Cada tipo de empregado tem seu próprio código de pagamento: gerentes têm código 1, trabalhadores por hora têm código 2, trabalhadores comissionados têm código 3 e trabalhadores por unidade têm código 4. Use um switch para calcular o pagamento de cada empregado com base no seu código de pagamento. Dentro do switch, peça ao usuário (ou seja, o funcionário administrativo da folha de pagamento) que informe os fatos apropriados que seu programa precisa para calcular o pagamento de cada empregado com base no código.
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.
Vamos escrever um programa que avalia o pagamento semanal de cada funcionário e, usando uma instrução switch, calcula o pagamento semanal de cada funcionário. Nosso programa irá pedir para que o usuário insira o código referente a cada tipo de trabalhador e também o pagamento. No final irá exibir o total de funcionário que foram pagos.
Passo 2
Escrevendo o programa:
#include
int main( void )
{
int payCode;
/* código de pagamento do funcionário atual */
int managers = 0;
/* número total de gerentes */
int hWorkers = 0;
/* número total de trabalhadores horistas */
int cWorkers = 0;
/* número total de comissionados */
int pWorkers = 0;
/* número total de trabalhadores por peça */
int pieces;
/* número de peças do trabalhador atual */
double mSalary;
/* salário do gerente */
double hSalary;
/* salário do trabalhador por hora */
double cSalary;
/* salário do comissionado */
double pSalary; /* salário */
double hours;
/* total de horas trabalhadas */
double otPay;
/* pagamento de hora extra */
double otHours; /* horas extras */
double pay;
/* salário semanal do funcionário atual */
/* prompt para entrada do primeiro funcionário */
printf("Digite o codigo de pagamento (-1 para finalizar): ");
scanf( "%d", &payCode );
/* loop enquanto o valor -1 não é lido do usuário */
while ( payCode != -1 ) {
/* alterna para a computação apropriada de acordo com o código de pagamento */
switch ( payCode ) {
/* código de pagamento 1 corresponde ao gerente */
case 1:
/*solicitar salário semanal */
printf("Gerente selecionado.\n");
printf("Digite o salário semanal: ");
scanf( "%lf", &mSalary );
/* o pagamento do gerente é o salário semanal */
printf( "O pagamento do gerente e de $%.2f\n", mSalary );
++managers;/* atualiza o número total de gerentes */
break; /* exit switch */
/* código de pagamento 2 corresponde ao trabalhador horista */
case 2:
/* prompt de salário por hora */
printf("Trabalhador por hora selecionado.\n");
printf("Digite o salario por hora: ");
scanf( "%lf", &hSalary );
/* solicita o número de horas trabalhadas */
printf("Digite o total de horas trabalhadas: ");
scanf( "%lf", &hours );
/* pagamento fixo por até 40 horas, 1,5 por horas acima de 40 */
if ( hours > 40.0 ) {
/* calcular horas de OT e pagamento total */
otHours = hours - 40.0;
otPay = hSalary * 1.5 * otHours + hSalary * 40.0;
printf( "O trabalhador trabalhou %.1f horas extras.\n", otHours );
printf( "O pagamento dos trabalhadores é de $%.2f\n", otPay );
} /* end if */
else { /* sem horas extras */
pay = hSalary * hours;
printf( "O salário do trabalhador é de $%.2f\n", pay );
} /* end else */
++hWorkers;
/* atualiza o número total de trabalhadores por hora */
break; /* exit switch */
/* código de pagamento 3 corresponde ao comissionado */
case 3:
/* prompt para vendas brutas semanais */
printf("Comissionado selecionado.\n");
printf("Digite as vendas brutas semanais: ");
scanf( "%lf", &cSalary );
/* paga $ 250 mais 5,7% das vendas brutas semanais */
pay = 250.0 + 0.057 * cSalary;
printf( "O pagamento do Comissionado é de $%.2f\n", pay );
++cWorkers;
/* atualiza o número total de comissionados */
break; /* exit switch */
/* código de pagamento 4 corresponde ao trabalhador por peça */
case 4:
/* prompt para o número de peças */
printf( "Trabalhador de peças selecionado.\nDigite o número de peças: " );
scanf( "%d", &pieces );
/* prompt de salário por peça */
printf("Digite o salário por peça: ");
scanf( "%lf", &pSalary );
pay = pieces * pSalary;
/* calcular o pagamento */
printf( "O salário do Trabalhador de Peças é de $%.2f\n", pay );
++pWorkers;
/* atualiza o número total de trabalhadores por peça */
break; /* exit switch */
/* caso padrão */
default :
printf("Código de pagamento inválido.\n");
break;
} /* end switch */
/* prompt para entrada do próximo funcionário */
printf("\nDigite o codigo de pagamento (-1 para finalizar): ");
scanf( "%d", &payCode );
} /* end while */
/* exibe contagens totais para cada tipo de funcionário */
printf( "\n" );
printf( "Número total de gerentes pagos: %d\n", managers );
printf( "Número total de trabalhadores por hora pagos: %d\n", hWorkers );
printf( "Número total de comissionados pagos: %d\n", cWorkers );
printf( "Número total de trabalhadores por peça pagos: %d\n", pWorkers );
return 0;
} /* end main */
Passo 3
A saída será:

E assim finalizamos mais um exercício galera!!! Até o próximo.
Resposta
#include
int main( void )
{
int payCode;
/* código de pagamento do funcionário atual */
int managers = 0;
/* número total de gerentes */
int hWorkers = 0;
/* número total de trabalhadores horistas */
int cWorkers = 0;
/* número total de comissionados */
int pWorkers = 0;
/* número total de trabalhadores por peça */
int pieces;
/* número de peças do trabalhador atual */
double mSalary;
/* salário do gerente */
double hSalary;
/* salário do trabalhador por hora */
double cSalary;
/* salário do comissionado */
double pSalary; /* salário */
double hours;
/* total de horas trabalhadas */
double otPay;
/* pagamento de hora extra */
double otHours; /* horas extras */
double pay;
/* salário semanal do funcionário atual */
/* prompt para entrada do primeiro funcionário */
printf("Digite o codigo de pagamento (-1 para finalizar): ");
scanf( "%d", &payCode );
/* loop enquanto o valor -1 não é lido do usuário */
while ( payCode != -1 ) {
/* alterna para a computação apropriada de acordo com o código de pagamento */
switch ( payCode ) {
/* código de pagamento 1 corresponde ao gerente */
case 1:
/*solicitar salário semanal */
printf("Gerente selecionado.\n");
printf("Digite o salário semanal: ");
scanf( "%lf", &mSalary );
/* o pagamento do gerente é o salário semanal */
printf( "O pagamento do gerente e de $%.2f\n", mSalary );
++managers;/* atualiza o número total de gerentes */
break; /* exit switch */
/* código de pagamento 2 corresponde ao trabalhador horista */
case 2:
/* prompt de salário por hora */
printf("Trabalhador por hora selecionado.\n");
printf("Digite o salario por hora: ");
scanf( "%lf", &hSalary );
/* solicita o número de horas trabalhadas */
printf("Digite o total de horas trabalhadas: ");
scanf( "%lf", &hours );
/* pagamento fixo por até 40 horas, 1,5 por horas acima de 40 */
if ( hours > 40.0 ) {
/* calcular horas de OT e pagamento total */
otHours = hours - 40.0;
otPay = hSalary * 1.5 * otHours + hSalary * 40.0;
printf( "O trabalhador trabalhou %.1f horas extras.\n", otHours );
printf( "O pagamento dos trabalhadores é de $%.2f\n", otPay );
} /* end if */
else { /* sem horas extras */
pay = hSalary * hours;
printf( "O salário do trabalhador é de $%.2f\n", pay );
} /* end else */
++hWorkers;
/* atualiza o número total de trabalhadores por hora */
break; /* exit switch */
/* código de pagamento 3 corresponde ao comissionado */
case 3:
/* prompt para vendas brutas semanais */
printf("Comissionado selecionado.\n");
printf("Digite as vendas brutas semanais: ");
scanf( "%lf", &cSalary );
/* paga $ 250 mais 5,7% das vendas brutas semanais */
pay = 250.0 + 0.057 * cSalary;
printf( "O pagamento do Comissionado é de $%.2f\n", pay );
++cWorkers;
/* atualiza o número total de comissionados */
break; /* exit switch */
/* código de pagamento 4 corresponde ao trabalhador por peça */
case 4:
/* prompt para o número de peças */
printf( "Trabalhador de peças selecionado.\nDigite o número de peças: " );
scanf( "%d", &pieces );
/* prompt de salário por peça */
printf("Digite o salário por peça: ");
scanf( "%lf", &pSalary );
pay = pieces * pSalary;
/* calcular o pagamento */
printf( "O salário do Trabalhador de Peças é de $%.2f\n", pay );
++pWorkers;
/* atualiza o número total de trabalhadores por peça */
break; /* exit switch */
/* caso padrão */
default :
printf("Código de pagamento inválido.\n");
break;
} /* end switch */
/* prompt para entrada do próximo funcionário */
printf("\nDigite o codigo de pagamento (-1 para finalizar): ");
scanf( "%d", &payCode );
} /* end while */
/* exibe contagens totais para cada tipo de funcionário */
printf( "\n" );
printf( "Número total de gerentes pagos: %d\n", managers );
printf( "Número total de trabalhadores por hora pagos: %d\n", hWorkers );
printf( "Número total de comissionados pagos: %d\n", cWorkers );
printf( "Número total de trabalhadores por peça pagos: %d\n", pWorkers );
return 0;
} /* end main */