Ir ao conteúdo
  • Cadastre-se
Luiz Felipe_724569

Ajuda em trabalho em c,

Recommended Posts

Desculpa o pedido assim, sem nada feito, porém estou desesperado e preciso de ajuda

 

A Copa-web, empresa de desenvolvimento de soluções para E-commerce, resolveu criar um sistema 
para controle de seu Departamento Pessoal. 
Para tanto, ela necessita cadastrar o salário de seus funcionários, de acordo com os cargos existentes 
na empresa, sendo eles: 
Código Cargo Salário 
1 Programador R$ 4.300,00 
2 Web designer R$ 3.500,00 
3 Analista R$ 5.600,00 
4 Arquiteto de Banco de Dados R$ 8.900,00 
5 Gerente R$ 10.250,00 
 
A empresa tem estrutura física para comportar no máximo 20 funcionários. O registro de cada um 
deles contém: matrícula, nome, e código do cargo. 
Assim, crie um programa em C que contenha uma função para mostrar um menu ao usuários, 
contendo as opções: 
1. Cadastrar cargos da empresa 
2. Cadastrar funcionários da empresa 
3. Mostrar um relatório contendo matricula, nome e salário dos funcionários da empresa 
4. Mostrar o valor pago aos funcionários que pertençam a um cargo informado pelo usuário 
5. Finalizar 
Para cada opção: 
1: Cada vez que essa opção for selecionada deverá ser chamada uma função, na qual o usuário poderá 
cadastrar quantos cargos ele desejar. Não esqueça que na empresa existem no máximo 5 cargos. Se o 
usuário tentar cadastrar mais de 5 cargos ou um cargo repetido, mostre uma mensagem de erro 
explicativa. 
2: Nesta opção, deverá ser chamada uma função para cadastrar o funcionário, sendo que a matrícula 
do mesmo não pode ser repetida, bem como o código do cargo deve corresponder a um cargo já 
cadastrado. Assim, seu programa deve validar a matrícula do funcionário, o código do cargo, e o  
 
 
número limite de funcionários da empresa. Em caso de inconsistência em qualquer uma dessas regras, 
mostre uma mensagem de erro explicativa. 
3: Você decide a melhor forma de implementar. 
4: Quando esta opção for selecionada, uma função deve ser chamada para realizar o somatório do 
salário de todos os funcionários que pertencem a um determinado cargo. Este cargo é informado pelo 
usuário (códigos entre 1 e 5) na função main, onde também deve ser exibido o somatório calculado 
pela função. 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer o que? que alguem crie um programa de gerenciamento de dados pra voce?

Ou você esta procurando um na internet?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tenho isso se puder me ajudar a corrigir

 

#include  <stdio.h>    struct info {        char nome [20], cargo [10];        int cod, matricula;        float salario;    };int main (void){        struct info  funcionarios [20];        int ent,i, Tend=0;        int mat = 201400,x=0 ;        printf("\t\t\tBEM VINDO A E-commerce");        printf("\n\nSELECIONE UMA OPCAO:");        printf("\n1: PARA CADASTRAR FUNCIONARIOS.");        printf("\n2: MOSTRAR RELATORIO DE FUNCIONARIOS.");        printf("\n3: MOSTAR VALOR DA FOLHA DE PAGAMENTO.");        printf("\n4: FINALIZAR E-commerce.\n");        for (i=0; i<20; i++){            funcionarios[i].matricula = mat;            mat++;        }    while (Tend==0){        scanf("%d",&ent);       switch (ent){       case 1 :            system("cls");            printf("DIGITE OS DADOS DADOS FUNCIONARIO");            for (i=0; i<20; i++){                system("cls");                printf("\nNOME DO FUNCIONARIO:");                    scanf("%s",&funcionarios[i].nome);                printf("\nCODIGO DO CARGO:");                    scanf("%d",&funcionarios[i].cod);                switch (funcionarios[i].cod){                    case 1 : funcionarios[i].salario = 4300;                              x++;                                 break;                    case 2 : funcionarios [i].salario= 3500;                                 x++;                                  break;                    case 3 : funcionarios[i].salario = 5600;                                x++;                                        break;                    case 4 : funcionarios[i].salario = 8900;                                x++;                                        break;                    case 5 : funcionarios[i].salario = 10250;                                x++;                                        break;                    case 0 :                        i=20;                        break;                   default :                       printf("OPCAO DE CARGO NAO VALIDA POR FAVOR TENTE NOVAMENTE");                       break;                }                system("cls");                printf("\n1: PARA CADASTRAR FUNCIONARIOS.");        printf("\n2: MOSTRAR RELATORIO DE FUNCIONARIOS.");        printf("\n3: MOSTAR VALOR DA FOLHA DE PAGAMENTO.");        printf("\n4: FINALIZAR E-commerce.\n");            }                break;        case 2 :printf("\n\nRELATORIO DE FUNCIONARIOS:");                    for (i=0; i<x ; i++){                        printf("\n\nNOME:%s\nMATRICULA:%d\nSALARIO:%.2f",funcionarios[i].nome, funcionarios[i].matricula,funcionarios[i].salario);                    }                break;        case 3:                break;        case 4 : Tend ++;                break;        default:                system("cls");                printf("OPCAO NAO VALIDA POR FAVOR TENTE NOVAMENTE");                break;        }    }    getchar();    return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que você cometeu um engano apenas na rotina de leitura dos dados.

 

Coloquei o "while()" antes do menu, permitindo assim que seja mostrado a cada loop.

Dessa forma não necessita do segundo menu, que não tem funcionalidade na forma como está e acaba confundindo.

E a variável "i" que servia de controle para posicionar o vetor, foi trocada pelo "x" que possui o valor exato da quantidade de elementos no vetor.

 

#include <stdlib.h>#include <stdio.h> struct info{    char nome[20];    char cargo[10];    int cod;    int matricula;    float salario;}; int main (void){    struct info funcionarios[20];    int ent = 0;    int i = 0;    int Tend = 0;    int mat = 201400;    int x = 0;     for ( i = 0; i < 20; i++ )        funcionarios[i].matricula = mat++;     while ( Tend == 0 )    {         printf("\t\t\tBEM VINDO A E-commerce");        printf("\n\nSELECIONE UMA OPCAO:");        printf("\n1: PARA CADASTRAR FUNCIONARIOS.");        printf("\n2: MOSTRAR RELATORIO DE FUNCIONARIOS.");        printf("\n3: MOSTAR VALOR DA FOLHA DE PAGAMENTO.");        printf("\n4: FINALIZAR E-commerce.\n");        scanf("%d", &ent);         switch ( ent )        {            case 1 :                {                    system("cls");                     printf("DIGITE OS DADOS DADOS FUNCIONARIO");                     if ( x < 20 )                    {                        system("cls");                         printf("\nNOME DO FUNCIONARIO:");                        scanf("%s", funcionarios[x].nome);                         printf("\nCODIGO DO CARGO:");                        scanf("%d", &funcionarios[x].cod);                         switch (funcionarios[x].cod)                        {                            case 1 :                                funcionarios[x++].salario = 4300;                                break;                             case 2 :                                funcionarios[x++].salario= 3500;                                break;                             case 3 :                                funcionarios[x++].salario = 5600;                                break;                             case 4 :                                funcionarios[x++].salario = 8900;                                break;                             case 5 :                                funcionarios[x++].salario = 10250;                                break;                             default :                                printf("OPCAO DE CARGO NAO VALIDA POR FAVOR TENTE NOVAMENTE");                                break;                        }                    }                    break;                }             case 2 :                printf("\n\nRELATORIO DE FUNCIONARIOS:\n\n");                for ( i = 0; i < x ; i++ )                    printf("NOME:%s\nMATRICULA:%d\nSALARIO:%.2f\n\n", funcionarios[i].nome, funcionarios[i].matricula, funcionarios[i].salario );                break;             case 3:                break;             case 4 :                Tend++;                break;             default:                system("cls");                 printf("OPCAO NAO VALIDA POR FAVOR TENTE NOVAMENTE");                break;        }    }     return 0;}

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×