Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
DONG YOL

C Desenvolva um programa capaz de obter os dados de pessoas que trabalha

Recommended Posts

       Olá, Pessoal estou com um trabalho final para entregar mas não faço a minina ideia de como faze-lô se alguém puder me ajudar com dicas seria de bastante ajuda.

       PS:Ainda não tenho um código por hora para postar, tentei mais não saiu nada. 

 

Desenvolva um programa capaz de obter os seguintes dados de pessoas que trabalham em uma empresa: (a) nome; (b) grau de estudo: 1, 2, 3, 4 ou 5; (c) quantidade de línguas que fala; (d) cargo que ocupa: 1º, 2º, 3º ou 4º nível; (e) seu índice de produtividade: entre 0 e 1,0. Baseado nisto, o programa deve atender aos seguintes requisitos:

1) Os dados das pessoas devem ser tratados por uma struct chamada Funcionario.

2) A estrutura Funcionario também deve comportar o salário do funcionário, a ser calculado a pedido do usuário.

3) O usuário informará quantas pessoas trabalham na empresa, o que implica em alocar uma quantia de memória apropriada (n) para ‘variáveis’ do tipo Funcionario.

4) O cálculo do salário será feito segundo um conjunto de fatores, sendo um primeiro fator a formação. Este fator deve ser calculado em uma função que retorna o fatorial do grau de instrução da pessoa (1º, 2º, 3º, 4º ou 5º grau).

5) Outro fator será chamado de poliglota e será calculado por uma função que recebe a quantidade de línguas faladas pela pessoa e a eleva ao cubo, retornando isto como resultado.

6) Há ainda o fator salário base que varia conforme o nível da pessoa. Por exemplo, nível 1 (R$ 1.000,00), nível 2 (R$ 1.500,00), nível 3 (R$ 2.000,00) e assim por diante. O fator salário base é calculado em uma função que recebe como parâmetro o nível e retorna o salário base.

7) O salário será calculado, em uma função, pela seguinte regra: Se Índice de Produtividade > 0,7 então Salário = (Salário base + (Formação*100) + (Poliglota*100)) + (Salário base* Índice de Produtividade).
Se Índice de Produtividade entre 0,4 e 0,7 então Salário = (Salário base + (Formação*100) + (Poliglota*100))
Se Índice de Produtividade < 0,4 então Salário = (Salário base + (Formação*100) + (Poliglota*100)) - (Salário base* (0,4 - Índice de Produtividade))

8) O programa deve ainda disponibilizar, também por uma função, a quantidade de funcionários que ganham acima da média.

9) Alterar os dados de um funcionário (informado pelo usuário através do nome.); Dentro da opção de Alterar, será necessário incluir um novo menu solicitando qual dos campos se deseja alterar (identificar os campos por número como opções do menu) e o usuário pode escolher somente um campo por vez, mas o menu deve permanecer enquanto o usuário não escolher a opção de sair do modo de edição.

10) Por fim, o programa permitirá ao usuário escolher entre funcionalidades (cadastro, cálculo de salário, quantidade maior que a média, e edição e visualização das informações de um determinado funcionário). O usuário poderá escolher as funcionalidades por meio de um menu, podendo repeti-las até que ele deseje sair do programa

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DONG YOL      esse programa seria para alguém que já tenha muito experiência ,   pois struct é bem complicado de entender  , então  creio que seja melhor fazer aos poucos ,  comece por pegar os dados das pessoas ,  e para isso primeiro crie a struct  e dentro  da função main coloque um do / while  e dentro pegue os dados usando scanf ou gets e pergunte se quer pegar os dados de outra pessoa ,  se digitar n   então sair do loop .   faça essa parte e poste aqui para podermos ver como está e em que podemos ajudar  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

  int main()
  {

  struct funcionario{
    char nome[50];
    int grau_de_estudo;
    int linguas_faladas;
    int cargo;
    float indice_produt;
    float salario;
   };
    struct funcionario novo;
      char ch;

    do{
      do{
         printf("\n digite o nome do funcionario:");
         gets(novo.nome);
         printf("\n grau de estudo:");
         gets("%i", &novo.grau_de_estudo);
         fflush(stdin);
         printf("\n quantas linguas faladas:");
         gets("%i", &novo.linguas_faladas);
         fflush(stdin);
         printf("\n informe o cargo que ocupa:");
         gets("%i", &novo.cargo);
         fflush(stdin);
         printf("\n informe o indice de produtividade:");
         gets("%f", &novo.indice_produt);
         fflush(stdin);
         printf("\n informe o salario do funcionario:");
         gets("%f", &novo.salario);
         fflush(stdin);

          printf(\n deseja cadastrar outro funcionario);
          scanf("%c", &ch);
          if((ch!='s')&&(ch!='n')){
            printf("\n erro");

         }while((ch!='n')&&(ch!='s'));
         }while(ch!='n');
  }


system("pause");
    return 0;
}

           foi o que tentei fazer não consigo testar porque estou usando o code blocks a pouco tempo e ainda não sei mexer direito.

adicionado 21 minutos depois
21 minutos atrás, DONG YOL disse:

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

  int main()
  {

  struct funcionario{
    char nome[50];
    int grau_de_estudo;
    int linguas_faladas;
    int cargo;
    float indice_produt;
    float salario;
   };
    struct funcionario novo;
      char ch;

    do{
      do{
         printf("\n digite o nome do funcionario:");
         gets(novo.nome);
         printf("\n grau de estudo:");
         gets("%i", &novo.grau_de_estudo);
         fflush(stdin);
         printf("\n quantas linguas faladas:");
         gets("%i", &novo.linguas_faladas);
         fflush(stdin);
         printf("\n informe o cargo que ocupa:");
         gets("%i", &novo.cargo);
         fflush(stdin);
         printf("\n informe o indice de produtividade:");
         gets("%f", &novo.indice_produt);
         fflush(stdin);
         printf("\n informe o salario do funcionario:");
         gets("%f", &novo.salario);
         fflush(stdin);

          printf(\n deseja cadastrar outro funcionario);
          scanf("%c", &ch);
          if((ch!='s')&&(ch!='n')){
            printf("\n erro");

         }while((ch!='n')&&(ch!='s'));
         }while(ch!='n');
  }


system("pause");
    return 0;
}

           foi o que tentei fazer não consigo testar porque estou usando o code blocks a pouco tempo e ainda não sei mexer direito.

 

adicionado 25 minutos depois

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

  int main()
  {

  struct funcionario{
    char nome[50];
    int grau_de_estudo;
    int linguas_faladas;
    int cargo;
    float indice_produt;
    float salario;
   };
    struct funcionario novo;
      char ch;

    do{
      do{
         printf("\n digite o nome do funcionario:");
         fgets(novo.nome, sizeof(novo.nome),stdin);
         printf("\n grau de estudo:");
         scanf("%i", &novo.grau_de_estudo);
         fflush(stdin);
         printf("\n quantas linguas faladas:");
         scanf("%i", &novo.linguas_faladas);
         fflush(stdin);
         printf("\n informe o cargo que ocupa:");
         scanf("%i", &novo.cargo);
         fflush(stdin);
         printf("\n informe o indice de produtividade:");
         scanf("%f", &novo.indice_produt);
         fflush(stdin);
         printf("\n informe o salario do funcionario:");
         scanf("%f", &novo.salario);
         fflush(stdin);

          printf("\n deseja cadastrar outro funcionario");
          scanf("%c", &ch);
          if((ch!='s')&&(ch!='n')){
            printf("\n erro");

         }while((ch!='n')&&(ch!='s'));
         }while(ch!='n');
  }

    return 0;
}

              esse foi o que criei ignore os outros por favor.

Editado por DONG YOL
esta errado
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para o fórum [ i ] sem espaços é a tag para deixar o texto em itálico, então eles somem, e o texto está em itálico a partir do primeiro lugar onde deveria estar um [ i ].

 

Leia minha assinatura abaixo para ver como postar códigos no fórum sem que este tipo de problema aconteça.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DONG YOL     você pode editar sua postagem , se quiser , e deletar essas duas  partes  repetida do seu código , deixando apenas aquela que está no meio que está certa ,      seu código está bom , precisa uma melhor organização , como o struct precisa ficar fora da main , precisa de um contador e o struct precisa ter várias  posições pois senão nele só poderá guardar os dados de uma só pessoa , e o contador contará quantas pessoas foram cadastradas ,  e no final para mostrar o que foi guardado você pode colocar um laço de repetição , imprimindo todos os dados guardados , então essa parte do código ficaria assim  :

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
struct funcionario{
    char nome[50];
    int grau_de_estudo;
    int linguas_faladas;
    int cargo;
    float indice_produt;
    float salario;
};
int cont,i;
int main(){
    struct funcionario novo[100];
    char ch;
    do{
        fflush(stdin);
        printf("Digite O Nome Do Funcionario:");
        gets(novo[cont].nome);
        printf("Grau De Estudo:");
        fflush(stdin);
        scanf("%d", &novo[cont].grau_de_estudo);
        fflush(stdin);
        printf("Quantas Linguas Faladas:");
        scanf("%d", &novo[cont].linguas_faladas);
        fflush(stdin);
        printf("Informe O Cargo Que Ocupa:");
        scanf("%d", &novo[cont].cargo);
        fflush(stdin);
        printf("I(nforme O Indice De Produtividade:");
        scanf("%f", &novo[cont].indice_produt);
        fflush(stdin);
        printf("\n Informe O Salario Do Funcionario:");
        scanf("%f", &novo[cont].salario);
        cont++;
        do{
            fflush(stdin);
            printf("\n deseja cadastrar outro funcionario S/N ");
            scanf("%c", &ch);
            if((toupper(ch)!='S')&&(toupper(ch)!='N')){
                printf("\n erro");
            }
        }while(toupper(ch)!='N' && toupper(ch)!='S');
    }while(toupper(ch)!='N');
    system("pause");
    for(i=0;i<cont;i++){
        printf("====================================\n");
        printf("Nome --------: %s    \n",novo[i].nome           );
        printf("Grau --------: %d    \n",novo[i].grau_de_estudo );
        printf("Linguas -----: %d    \n",novo[i].linguas_faladas);
        printf("Cargo -------: %d    \n",novo[i].cargo          );
        printf("Indice ------: %.2f  \n",novo[i].indice_produt  );
        printf("Salario -----: %.2f\n\n",novo[i].salario        );
    }
    return 0;
}

 

Editado por devair1010
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado por arrumar essa parte do código para mim . Seria possível você me dizer mais dicas de como termino esse programa. Abraço. 

adicionado 1 minuto depois

@isrnick Agradeço pela ajuda irei ler sim a assinatura obrigada.

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DONG YOL    no enunciado pede para usar três funções , a do poliglota que pega a quantidade de línguas e retorna esse valor ao cubo ,  e a que calcula o salario base de acordo com o nível do cargo , e  a fatorial que pega o grau de estudo e faz a fatorial ,  então a mais fácil é a do poliglota , faça ela se possível as outras duas também , e poste aqui . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

to tentando mais não ta indo não

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DONG YOL    posta o rascunho mesmo  ,  não tem problema se estiver errado não .    e para fazer essa função do poliglota , você cria a função e coloca uma variável para receber o parâmetro enviado , e dentro da função você multiplica , esse valor recebido , por ele  mesmo e retorna esse resultado ;

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 horas atrás, devair1010 disse:

@DONG YOL    posta o rascunho mesmo  ,  não tem problema se estiver errado não .    e para fazer essa função do poliglota , você cria a função e coloca uma variável para receber o parâmetro enviado , e dentro da função você multiplica , esse valor recebido , por ele  mesmo e retorna esse resultado ;

 

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

 struct funcionario{
    char nome[50];
    int grau_de_estudo;
    int linguas_faladas;
    int cargo;
    float indice_produt;
    float salario;
};
int cont,i;
int main(){
    struct funcionario novo[100];
    char ch;
    do{
        fflush(stdin);
        printf("Digite O Nome Do Funcionario:");
        gets(novo[cont].nome);
        printf("Grau De Estudo 1,2,3,4,5 :");
        fflush(stdin);
        scanf("%d", &novo[cont].grau_de_estudo);
        fflush(stdin);
        printf("Quantas Linguas Faladas:");
        scanf("%d", &novo[cont].linguas_faladas);
        fflush(stdin);
        printf("Informe O Cargo Que Ocupa 1o,2o,3o,4o :");
        scanf("%d", &novo[cont].cargo);
        fflush(stdin);
        printf("Informe O Indice De Produtividade entre 0 e 1,0 :");
        scanf("%f", &novo[cont].indice_produt);
        fflush(stdin);
        printf("\n Informe O Salario Do Funcionario:");
        scanf("%f", &novo[cont].salario);
        cont++;
        do{
            fflush(stdin);
            printf("\n deseja cadastrar outro funcionario S/N ");
            scanf("%c", &ch);
            if((toupper(ch)!='S')&&(toupper(ch)!='N')){
                printf("\n erro");
            }
        }while(toupper(ch)!='N' && toupper(ch)!='S');
    }while(toupper(ch)!='N');
    system("pause");
    for(i=0;i<cont;i++){
        printf("====================================\n");
        printf("Nome --------: %s    \n",novo[i].nome           );
        printf("Grau --------: %d    \n",novo[i].grau_de_estudo );
        printf("Linguas -----: %d    \n",novo[i].linguas_faladas);
        printf("Cargo -------: %d    \n",novo[i].cargo          );
        printf("Indice ------: %.2f  \n",novo[i].indice_produt  );
        printf("Salario -----: %.2f\n\n",novo[i].salario        );
    }


    int formacao(int novo[i].gra_de_estudos){
       if(num < 0){
        return -1;
       }else if(novo[i].grau_de_estudo ==  0){
           return 1;
       }else{
       return (novo[i].grau_de_estudo * formacao(n - 1));
       }
    }
        int main(){
        int novo[i].grau_de_estudo;
          if(n < 0){
            printf("\n nao foi possivel calcular o fatorial %d", novo[i].grau_de_estudo);
        }else {
              printf("o fatorial de %d eh %d", novo[i].grau_de_estudo, formacao(novo[i].grau_de_estudo));
          }
      }

     int cubo(novo[i].linguas_faladas){
         int poliglota;
         poliglota = novo[i].linguas_faladas*3;
        return(poliglota);
     }
       int main(){
       int poliglota, novo[i].linguas_faladas;
          poliglota = cubo(novo[i].linguas_faladas);
       printf("poliglota = %d", poliglota);

       }

       void salario_base(float novo[i].cargo){
           if(novo[i].cargo == 1){
              printf("salario = %.2f", novo[i].salario);
            }
           if(novo[i].cargo == 2){
              printf("salario = %.2f", novo[i].salario);
           }
           if(if(novo[i].cargo == 3){
              printf("salario = %.2f", novo[i].salario);
           }
           if(novo[i].cargo == 4){
              printf("salario = %.2f", novo[i].salario);
           }else{
           return(novo[i].salario);
           }
       }
          int main(void){
             float salario_base, novo[i].salario;
          salario_base = novo[i].salario;
          printf("salario_base %.2f", salario_base);          
          
          
          }

    return 0;
}

Cara juro que tentei .Espero  que acredite.   

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DONG YOL    seu código está bom , precisa uma melhor organização ,  e a função int main só pode aparecer no código uma única vez , não pode repeti-la e nem fazer chamadas a main ,  e as funções geralmente ficam no início antes da main , mas se você quiser colocar elas no final depois da main pode também , mas precisa declarar todas elas no início , e aqui ainda fica faltando as opções 8 9 e 10 , então essa parte do seu código com algumas modificações ficaria assim  :

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
struct funcionario{
    char  nome[50];
    int   grau_de_estudo;
    int   linguas_faladas;
    int   cargo;
    float indice_produt;
    float salario;
};
int poliglota(int r){
    r*=r;
    return r;
}
int fatorial(int f){
    int w=f;
    if(f>1){
        while(f>1){
            w=w*(f-1);
            f--;
        }
    }
    else{
        w=1;
    }
    return w;
}
int salario_base(int b){
    int w;
    if(b==1)w=1000;
        else
            if(b==2)
                w=1500;
            else
                if(b==3)
                    w=2000;
                else
                    if(b==4)
                        w=2500;
    return w;
}
int cont,i,q,salario;
int main(){
    printf("Informe A Quantidade De Funcionarios ");
    scanf("%d",&q);
    struct funcionario novo[q];
    char ch;
    do{
        fflush(stdin);
        printf("Digite O Nome Do Funcionario: ");
        gets(novo[cont].nome);
        printf("Grau De Estudo   < 1 2 3 4 5 >: ");
        scanf("%d", &novo[cont].grau_de_estudo);
        fflush(stdin);
        printf("Quantas Linguas Faladas: ");
        scanf("%d", &novo[cont].linguas_faladas);
        fflush(stdin);
        printf("Informe O Nivel Do Cargo Que Ocupa  < 1 2 3 4 >: ");
        scanf("%d", &novo[cont].cargo);
        fflush(stdin);
        printf("Informe O Indice De Produtividade < Entre 0 e 1 >: ");
        scanf("%f", &novo[cont].indice_produt);
        if(novo[cont].indice_produt > 0.7)
            novo[cont].salario=(salario_base(novo[cont].cargo)+(fatorial(novo[cont].grau_de_estudo)*100)+
            (poliglota(novo[cont].linguas_faladas)*100))+(salario_base(novo[cont].cargo)*novo[cont].indice_produt);
        else
            if(novo[cont].indice_produt > 0.4 && novo[cont].indice_produt < 0.7){
                novo[cont].salario=salario_base(novo[cont].cargo)+fatorial(novo[cont].grau_de_estudo)*100+
                poliglota(novo[cont].linguas_faladas*100);
            }
            else
                if(novo[cont].indice_produt < 0.4){
                    novo[cont].salario=salario_base(novo[cont].cargo)+fatorial(novo[cont].grau_de_estudo)*100+
                    poliglota(novo[cont].linguas_faladas*100)-salario_base(novo[cont].cargo)*0.4 - novo[cont].indice_produt;
                }
        cont++;
        do{
            fflush(stdin);
            printf("\n deseja cadastrar outro funcionario S/N ");
            scanf("%c", &ch);
            if((toupper(ch)!='S')&&(toupper(ch)!='N')){
                printf("\n erro");
            }
        }while(toupper(ch)!='N' && toupper(ch)!='S');
    }while(toupper(ch)!='N');
    system("pause");
    for(i=0;i<cont;i++){
        printf("====================================\n");
        printf("Nome --------: %s    \n",novo[i].nome           );
        printf("Grau --------: %d    \n",novo[i].grau_de_estudo );
        printf("Linguas -----: %d    \n",novo[i].linguas_faladas);
        printf("Cargo -------: %d    \n",novo[i].cargo          );
        printf("Indice ------: %.2f  \n",novo[i].indice_produt  );
        printf("Salario -----: %.2f\n\n",novo[i].salario        );
    }
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Valeu mesmo vou tentar  deixar meu código mais organizado muito obrigada pela ajuda .Abraços. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×