Pesquisar neste blog

24/11/2017

Registro em C++ / C

Considerando os registros de 10 funcionários com os campos matrícula, nome e salário, desenvolver um algoritmo que utilize subprogramas e apresente um menu para a execução das seguintes etapas: 
a) Cadastrar os registros;
b) Apresentar um relatório dos funcionários em ordem alfabética; 
c) Apresentar um relatório onde conste a média dos salários dos funcionários;
d) Mostrar os funcionários que recebem acima de um determinado valor fornecido pelo usuário. Esse valor deve compreender o maior e o menor salário registrado dos funcionários.

Resolução:

#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <string>


using namespace std;

struct ficha
{
    int matricula;
    string nome;
    float salario;
};

const int tam=3;

ficha empresa[tam];//variavel global

void cadastro()
{
    cout<<"Digitar o registro de funcionários \n";
    for (int i=0;i<tam;i++){
        cout<<"\nMatricula "; cin>>empresa[i].matricula;
        cout<<"\nNome "; cin>>empresa[i].nome;
        cout<<"\nSalario "; cin>>empresa[i].salario;
    }
 
}

void ordena()
{
    ficha aux;
    for(int i=0; i<tam-1;i++)
        for(int j=(i+1);j<tam;j++)
        { 
            if(empresa[i].nome>empresa[j].nome)
            {
                aux=empresa[i];
                empresa[i]=empresa[j];
                empresa[j]=aux;
            }
        }
}

void ordenasalario()
{
    ficha aux;
    for(int i=0; i<tam-1;i++)
        for(int j=(i+1);j<tam;j++)
        { 
            if(empresa[i].salario>empresa[j].salario)
            {
                aux=empresa[i];
                empresa[i]=empresa[j];
                empresa[j]=aux;
            }
        }
}

void listar1()
{
    ordena();
    for(int i=0;i<tam;i++)
    {
        cout<<"\nMatricula "<<empresa[i].matricula;
        cout<<"\nNome "<<empresa[i].nome;
        cout<<"\nSalario "<<empresa[i].salario;
        cout<<"\n";
    }
}

float mediasalarios()
{
    float soma=0;
    for(int i=0;i<tam;i++){
          soma=soma+empresa[i].salario;
    }
    return(soma/tam);
}

void listarsalario()
{
    float salario;
    ordenasalario();
    float maiorsalario=empresa[tam-1].salario;
    float menorsalario=empresa[0].salario;
    cout<<"Qual é o salário base para listagem?";
    cin>>salario;
    if(salario>=menorsalario && salario<=maiorsalario)
    {
        for(int i=0;i<tam;i++){
            if (empresa[i].salario>salario){
              cout<<"\nMatricula "<<empresa[i].matricula;
              cout<<"\nNome "<<empresa[i].nome;
             cout<<"\nSalario "<<empresa[i].salario;
             cout<<"\n";
            }
        }
    }
    else
        cout<<"O salário fornecido não compreende o maior e o menor salário pago";
         
}

void buscar(){
string pesq;
printf("\n\nDigite o nome a ser pesquisado: ");
cin>>pesq;
for(int i=0; i<tam; i++){
if(pesq == empresa[i].nome){
cout<<"\nAhcei : ";
cout<<"\nNome: "<<empresa[i].nome;
cout<<"\nMatricula: "<<empresa[i].matricula;
cout<<"\nSalario: "<<empresa[i].salario;
}
}
}
   

void menu()
{
    int op=1;
    while (op!=5){
        cout<<"\nSelecione a opcao ";
        cout<<"\n 1.Cadastrar funcionarios ";
        cout<<"\n 2.Listar funcionarios em ordem alfabetica ";
        cout<<"\n 3.Listar media dos salarios ";
        cout<<"\n 4.Listar funcionario por base no salario especifico";
        cout<<"\n 5.Buscar ";
        cout<<"\n 6. SAIR \n\n";
        cin>>op;
        switch(op)
        {
                case 1: cadastro();
             
                break;
                case 2: listar1();
                break;
                case 3: cout<<"A média dos salários é R$ "<<mediasalarios();
                break;
                case 4:listarsalario();
                break;
                case 5: buscar();
                break;
                case 6: cout<<"Obrigado\n\n";
                break;
        }
    }
}

int main(int argc, char** argv) {

 
    menu();
    return 0;
}