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 */