Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda!


Leonardo de Moraes

Pergunta

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

Editado por Leonardo de Moraes
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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;
}

Editado por Mateus GP
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...