Jump to content
Fórum Script Brasil
  • 0

Ajuda!


Leonardo de Moraes
 Share

Question

Alguém poderia me dar uma noção de como começar este programa? To muito perdido!

Até entendo como fazer o arranjo, mas não entendo como posso fazer no caso do string. Eu poderia fazer uma matriz do numero de salarios, nomes e dos caracteres dos nomes?

Se puder botar direto em código eu agradeço, por que facilita o meu entendimento.

Agradeço desde já!

Escreva um programa em C que leia o nome e o salário dos funcionários de uma empresa (no

máximo 100). Não se sabe de antemão o número de leituras, o programa deve encerrar a parte de

leitura quando o usuário digitar “Enter” no campo nome. Pede-se:

Listar os nomes e os salário dos funcionários

Imprimir os nomes dos funcionários cujo salário é maior do que R$ 5.000,00

Edited by Leonardo de Moraes
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Bom,

como não sabemos o número de leituras mas temos duas condições para que terminemos de perguntar os nomes e salários, podemos usar um while. (Obs.: Farei o código em C++, pois não conheço C muito bem, só para te mostrar a lógica, ok? Fiz o máximo de coisas em C)

#include <iostream>
#include <cstring>
#include <locale>
#include <stdio.h>
#include <cstdlib>
using namespace std;
float Salarios [100];
char Nomes[100][50];
int i = 1;

void NomeseSalarios(float, char);
void MostrarFuncionarioseSalarios();
void MostrarSalariosMaioresQue5000();


void NomeseSalarios(float Salarios[100], char Nomes[100][50])

{
    cout << "OBS.: Para mostrar a lista de funcionários e seus salários e os funcionários\n"
    " que recebem mais que R$ 5000 digite 'Enter' no nome do usuário ou 0 no valor do salário" << "\n" << endl;
    do
    {
        cout << "\n";
        cin.sync();
        cout << "Qual é o nome do funcionário?\n" << endl;
        cin.get(Nomes[i-1],50);
        cout << "\n";
        cin.sync();
        cout << "Qual é o salário do funcionário?\n" << endl;
        cin >> Salarios[i-1];
          if (strncmp(Nomes[i-1], "Enter", 6) == 0 || Salarios[i-1] == 0)
        {
            cout << "\n";
            MostrarFuncionarioseSalarios();
        }
        else
        {
        cout << "\n";
        cin.sync();

      i++;
        }
    }

     while (i <= 100);
     MostrarFuncionarioseSalarios();
}
void MostrarFuncionarioseSalarios()

{
    int j;
    cout << "\n";
    cout << "Os funcionários e seus salários são:\n" << endl;
    cin.sync();
    for (j = 0; j <= i-1; j++)
    {
        if (strncmp(Nomes[j], "Enter", 6) == 0 || Salarios[j] == 0)
        {

        }
        else
        {
        cout << Nomes[j] << " - " << Salarios[j] << endl;
        }
    }
    MostrarSalariosMaioresQue5000();
}

void MostrarSalariosMaioresQue5000()

{
    int k;
    cout << "\n";
    cout << "Os funcionários que tem salários maiores que R$5000 são:\n" << endl;
    cin.sync();
    for(k = 0; k <= i; k++)
    {
        if (Salarios[k] > 5000)
        {
            cout << Nomes[k] << endl;
        }
    }
    cout << "\n\n";
    cout << "Até mais!" << endl;
    exit(0);
}
int main()
{
    setlocale(LC_ALL, "Portuguese");
    NomeseSalarios(Salarios, Nomes);
    return 0;
}

Olha, para ir para as funções de calcular o usuário pode digitar "Enter" como nome ou 0 como valor do salário.

Qualquer dúvida sobre o código é só perguntar.

P.S.: Desculpe a demora, é que por não estar usando as strings do C++ tive que dar uma pesquisada.

Link to comment
Share on other sites

  • 0

Veja este codigo (já está em C):

Faça algumas alterações pois fiz muito rapido, por isso pode gerar bugs.

#include <stdio.h>
#include <stdlib.h>

#define MAX_NOME    50
#define MAX_FUNCIO    100

typedef struct _FUN
{
    char nome[MAX_NOME];
    unsigned int salario;
} funcionarios;

int leiafuncionarios(funcionarios *fun)
{
    int lidos = 0, n;
    
    while(lidos < MAX_FUNCIO)
    {
        puts("Insira o nome do funcionario: ");
        fgets(fun[lidos].nome, MAX_NOME, stdin);
        if(*fun[lidos].nome == '\n')
            return lidos;
        n = strlen((char*)fun[lidos].nome);
        fun[lidos].nome[n-1] = 0;
        puts("Insira o salario do funcionario: ");
        scanf("%u%*c", &fun[lidos].salario);
        lidos++;
    }
    return lidos;
}

void imprimirfuncionarios(funcionarios* fun, int imprimir)
{
    int tmp = 0;
    while(tmp < imprimir)
    {
        printf("%s, Salario: R$ %u\n", fun[tmp].nome, fun[tmp].salario);
        tmp++;
    }
}

void imprimirfuncionarios5000(funcionarios* fun, int imprimir)
{
    int tmp = 0;
    while(tmp < imprimir)
    {
        if(fun[tmp].salario > 5000)
            printf("%s, Salario: R$ %u\n", fun[tmp].nome, fun[tmp].salario);
        tmp++;
    }
}

int main(int argc, char* argv[])
{
    funcionarios fun[MAX_FUNCIO];
    int numero = 0;
    
    numero = leiafuncionarios(fun);
    
    printf("Funcionarios e seus salarios\n");
    imprimirfuncionarios(fun, numero);
    printf("\nFuncionarios com salario maior que 5.000\n");
    imprimirfuncionarios5000(fun, numero);
    return 0;
}

Edited by Mateus GP
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...