Ir ao conteúdo
  • Cadastre-se

Ajuda em trabalho em c,


Posts recomendados

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

  • 2 semanas depois...

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;}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!