Resolução dos Problemas da Apostila de Registros
Exercício Complementar 2
1. Uma
indústria faz a folha de pagamentos de seus empregados baseado em uma tabela
que corresponde a estrutura de um vetor onde cada posição representa um
funcionário que contém os seguintes dados:
·
inscrição;
·
nome;
·
classe (1 ou 2);
·
horas normais ;
·
horas extras;
Fazer um programa que processe a tabela e emita
para cada funcionário seu contracheque, cujo formato é dado a seguir:
NÚMERO DE INSCRIÇÃO: NOME:
SALÁRIO HORAS NOMAIS:
SALÁRIO HORAS EXTRAS:
DEDUÇÃO INSS:
SALARIO LIQUIDO:
|
O
salário de referência deverá ser lido do teclado.
O
salário referente às horas extras é calculado acrescentando 30% ao salário-hora
normal. O desconto do INSS é de 8% do salário bruto (salário correspondente às
horas normais trabalhadas + salário correspondente às horas extras.
Para
o cálculo do salário, considerar que existem duas classes de funcionários, a
classe, cujo salário é 1,3 vezes o salário de referência, e a classe 2, cujo
salário é 1,9 vezes o salário de
referência.
Observação:
realize uma boa interface com o usuário utilizando as funções de cores e
posicionamento na tela.
Algoritmo
Programa Contracheque
Tipo
ficha
= registro
classe: literal
nome: literal[20]
inscricao: inteiro
hnormal: inteiro
hextra: inteiro
fim_registro
Var
Declare cadastro: vetor[1..50] de ficha
Declare i, q: inteiro
Declare op: literal
Declare salreferencia, salclasse, inss, salnormal, salextra, salbruto,
salliquido: real
Inicio
q ß 0
Repita
Inicio_repita
Leia (cadastro[q].inscricao)
Leia (cadastro[q].nome)
Leia (cadastro[q].classe)
Enquanto (cadastro[q].classe <> ‘1’) OR (cadastro[q].classe
<> ‘2’) Faça
Inicio_enquanto
Escreva (“CLASSE INVALIDA”)
Leia (cadastro[q].classe)
Fim_enquanto
Leia (cadastro[q].hnormal)
Leia (cadastro[q].hextra)
q ß q
+ 1
Escreva (“Existem outros (s/n)?”)
Leia (op)
Enquanto (op = ‘s’)
Fim_repita
salreferencia ß
0
Leia (salreferencia)
Para i
ß 1
até q Faça
Inicio_para
salclasse ß 0
salnormal ß 0
salextra ß 0
salbruto ß 0
salliquido ß
0
inss ß 0
Se cadastro[i].classe = ‘1’
Entao salclasse ß salreferencia * 1.3
Senao salclasse ß
salreferencia * 1.9
Fim_se
salnormal ß
salclasse * cadastro[i].hnormal
salnormal ß
(1.3 * salclasse) * cadastro[i].hextra
salbruto ß salnormal
+ salextra
inss ß
0.08 * salbruto
salliquido ß
salbruto – inss
Escreva (“NUMERO DE INSCRICAO: “, cadastro[i].inscricao , “NOME: “ ,
cadastro[i].nome)
Escreva (“SALARIO HORAS NORMAIS: “, salnormal)
Escreva (“SALARIO HORAS EXTRAS: “,
salextra)
Escreva (“DEDUCAO INSS: “, inss)
Escreva (“SALARIO LIQUIDO: “, salliquido)
Fim_para
Fim
Código implementado no Dev-C++ 4.9.9.2
#include
<iostream>
#include
<stdio.h>
using namespace std;
struct ficha //declaração
do tipo registro
{
char classe, nome[20];
int
inscricao, hnormal, hextra;
};
int main()
{
ficha
cadastro[50]; //declaração do vetor cadastro
do tipo ficha
float
salreferencia, salclasse, inss, salnormal, salextra, salbruto, salliquido;
int i, q, len;
char op;
q = 0;
do //leitura dos dados dos funcionários
{
cout
<< " >>>>>>>>>>>>> PROGRAMA
FOLHA DE PAGAMENTO <<<<<<<<<<<<< "
<< "\n\n";
cout
<< "\t\t" << "CADASTRO DE FUNCIONARIOS"
<< "\n\n";
cout
<< "Inscricao: ";
cin
>> cadastro[q].inscricao;
cin.sync();
cout
<< "Nome: ";
gets(cadastro[q].nome);
cout
<< "Classe (1 ou 2): ";
cin
>> cadastro[q].classe;
while (!((cadastro[q].classe == '1') || (cadastro[q].classe == '2'))) //verificação de classe inválida
{
cout << "\n" << "CLASSE INVALIDA"
<< endl;
cout << "\n" << "Classe (1 ou 2): ";
cin >> cadastro[q].classe;
}
cout
<< "Horas normais: ";
cin
>> cadastro[q].hnormal;
cout
<< "Horas extras: ";
cin
>> cadastro[q].hextra;
q =
q + 1;
cout << "\n" <<
"Existem outros funcionarios (s/n)?";
cin >> op;
system("cls");
}
while (op == 's');
cout
<< " >>>>>>>>>>>>> PROGRAMA
FOLHA DE PAGAMENTO <<<<<<<<<<<<< "
<< "\n\n";
salreferencia = 0;
cout
<< "Salario por hora trabalhada em R$: "; //leitura
do salário de referência
cin
>> salreferencia;
cout
<< "\n\n" << "\t\t" << "EMISSAO DO
CONTRACHEQUE";
for (i =
0; i < q; i++) //emissão do contracheque
{
salclasse = inss = salnormal = salextra = salbruto = salliquido = 0;
if
(cadastro[i].classe == '1') //verificação
da classe
{
salclasse = (salreferencia * 1.3);
}
else
{
salclasse = (salreferencia * 1.9);
}
salnormal = salclasse * cadastro[i].hnormal; //cálculo
do salário horas normais
salextra = (1.3 * salclasse) * cadastro[i].hextra; //cálculo
do salário horas extras
salbruto = salnormal + salextra; //cálculo do
salário bruto
inss
= (0.08 * salbruto); //cálculo da
dedução do inss
salliquido = salbruto - inss; //cálculo do
salário líquido
cout
<< "\n\n";
cout
<< " NUMERO DE INSCRICAO: " << cadastro[i].inscricao
<< "\t" << "NOME: ";
cout
<< cadastro[i].nome << endl;
cout
<< " SALARIO HORAS NORMAIS: R$ " << salnormal <<
endl;
cout
<< " SALARIO HORAS EXTRAS: R$ " << salextra <<
endl;
cout
<< " DEDUCAO INSS: R$ " << inss << endl;
cout
<< "\t" << "SALARIO LIQUIDO: R$ " <<
salliquido << endl;
cout << "\n";
system("PAUSE");
}
system("cls");
cout
<< "\n";
cout
<< " ********** OBRIGADO POR ESCOLHER ESTE SOFTWARE **********
";
cout
<< "\n\n";
system("PAUSE");
}
Nenhum comentário:
Postar um comentário