quarta-feira, 6 de junho de 2012

Registros - Exercício Complementar 2

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