WEBROGER Postado Novembro 19, 2008 Denunciar Share Postado Novembro 19, 2008 Caros colegas tenho seguinte problema.Preciso entregar um trabalho na faculdade ate sexta feira já fiz bastante coisa e não estou conseguindo fazero programa funcionar direito.Estou postando o código, testem e vejam o que podem me ajudar.Mas basicamente, o prblema e na leitura das variaveis com o `scanf`Segue o código/* Escrever um programa que faca o controle das informações relativas aos funcionários da Empresa Louzada & Louzada S/A O programa deve implementar as principais atividades relativas a este controle, tis como: 1)Registro de um novo funcionário (numero máximo de funcionários é 50); 2)Remoção de um funcionario 3) Alteração de alguma informação(nome,salário,cargo ocupado); 4) Resposta a diversas consultas */ #include<stdio.h> #include<conio.h> #include<string.h> #define MAX 2 /* Estrutra para armazenar a ficha do funcionario*/ struct cadastro { int cod; /* Código do funcionario*/ char nome[50]; /* Nome do funcionario*/ float salario; /* Salario do funcionario*/ char cargo[30]; /* Cargo do funcionario*/ int idade; /* idade do funcionario*/ char sexo[2]; /* Sexo do funcionario (M)- Masculino e (F)- Feminino*/ }; struct cadastro funcionario[MAX]; int topo; void inserir(); void excluir(); void listar(); void pesquisar(); void alterar(); /* Programa Principal*/ int main() { int opcao; char seguir = 's'; topo = 0; while(seguir == 's') { printf(" *** Cadastro de Funcionários *** \n\n"); printf(" 1) NOVO \n"); printf(" 2) REMOVER \n"); printf(" 3) LISTAR \n"); printf(" 4) PESQUISAR \n"); printf(" 5) ALTERAR \n\n"); printf(" Digite sua opcao: "); scanf("%d%*c",&opcao); printf("\n"); switch(opcao) { case 1: { printf(" INSERINDO NOVO REGISTRO \n\n"); if(topo < MAX) { inserir(); printf(" DADO INSERIDO COM SUCESSO!\n\n"); } else { printf(" Desculpe, Sitema de Cadastro esta no limite!\n\n"); } break; } case 2: { if(topo == 0) { printf("não há dados para serem excluidos!\n\n"); } else { excluir(); printf(" DADO EXCLUIDO COM SUCESSO!\n\n"); } break; } case 3: { if(topo == 0) { printf("não há dados no sistema!\n\n"); } else { printf(" Listando os Funcionarios cadastrados\n\n"); listar(); } break; } case 4: { if(topo == 0) { printf("não há dados no sistema!\n\n"); } else { printf(" PESQUIZANDO DADO\n\n"); pesquisar(); } break; } case 5: { if(topo == 0) { printf("não há dados no sistema!\n\n"); } else { printf(" ALTERARANDO DADOS!\n\n"); alterar(); printf(" DADOS ALTERADOS COM SUCESSO!\n\n"); } break; } default: printf(" ( OPCAO INVALIDA! )\n\n"); } printf(" CONTINUAR?(S/N) "); scanf("%c",&seguir); printf("\n"); } getch(); return 0; } /* Funcao para inserir registros*/ void inserir() { funcionario[topo].cod = topo+1; printf(" CODIGO : %d\n",funcionario[topo].cod); printf(" NOME: "); fgets(funcionario[topo].nome,50,stdin); funcionario[topo].nome[strlen(funcionario[topo].nome)-1] = ''; printf(" SALARIO: "); scanf("%f", &funcionario[topo].salario); printf(" CARGO: "); fgets(funcionario[topo].cargo,30,stdin); funcionario[topo].cargo[strlen(funcionario[topo].cargo)-1] = ''; printf(" IDADE: "); scanf("%d", &funcionario[topo].idade); printf(" SEXO: "); fgets(funcionario[topo].sexo,2,stdin); funcionario[topo].sexo[strlen(funcionario[topo].sexo)-1] = ''; printf("\n"); topo = topo + 1; } /*Função para excluir um funcionario do Sistema*/ void excluir() { topo = topo - 1; } /*Função para listar os funcionarios cadastrados no Sistema*/ void listar() { int i; for(i = 0;i < topo; i++) { printf(" ARQUIVO %d\n",(i+1)); printf(" CODIGO: %d",funcionario[i].cod); printf(" NOME: %s",funcionario[i].nome); printf(" SALARIO: %f",funcionario[i].salario); printf(" CARGO: %s",funcionario[i].cargo); printf(" IDADE: %d",funcionario[i].idade); printf(" SEXO: %s",funcionario[i].sexo); printf("\n\n"); } } /*Função para alterar os funcionarios cadastrados no Sistema*/ void alterar() { int i,dado,cont = 0; printf(" ATENCAO! PARA ALTERAR UM REGISTRO \n"); printf(" EFETUE UMA PESQUIZA PELO SEU CODIGO. \n\n"); printf(" CODIGO DO REGISTRO: "); scanf("%d",&dado); for(i = 0;i < topo; i++) { if(dado == funcionario[i].cod) { cont = cont + 1; printf(" NOME: "); fgets(funcionario[topo].nome,50,stdin); funcionario[topo].nome[strlen(funcionario[topo].nome)-1] = ''; printf(" SALARIO: "); scanf("%f", &funcionario[topo].salario); printf(" CARGO: "); fgets(funcionario[topo].cargo,30,stdin); funcionario[topo].cargo[strlen(funcionario[topo].cargo)-1] = ''; printf(" IDADE: "); scanf("%d", &funcionario[topo].idade); printf(" SEXO: "); fgets(funcionario[topo].sexo,2,stdin); funcionario[topo].sexo[strlen(funcionario[topo].sexo)-1] = ''; } } if(cont == 0) { printf(" DADO não ENCONTRADO!\n\n"); } } /*Função para pesquisar dados cadastrados no Sistema*/ void pesquisar() { int i,dado,cont = 0; printf(" PESQUIZA POR CODIGO: "); scanf("%d",&dado); for(i = 0;i < topo; i++) { if(dado == funcionario[i].cod) { printf("Dado Encontrado \n\n"); printf(" CODIGO: %d",funcionario[i].cod); printf(" NOME: %s",funcionario[i].nome); printf(" SALARIO: %f",funcionario[i].salario); printf(" CARGO: %s",funcionario[i].cargo); printf(" IDADE: %d",funcionario[i].idade); printf(" SEXO: %s",funcionario[i].sexo); printf("\n"); cont = cont + 1; } } if(cont == 0) { printf(" Registro não Encontrado!\n\n"); } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kolesnikov1 Postado Abril 5, 2017 Denunciar Share Postado Abril 5, 2017 Só usar o getchar ao em invés de scanf Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
WEBROGER
Caros colegas tenho seguinte problema.
Preciso entregar um trabalho na faculdade
ate sexta feira já fiz bastante coisa e não estou conseguindo fazer
o programa funcionar direito.
Estou postando o código, testem e vejam o que podem me ajudar.
Mas basicamente, o prblema e na leitura das variaveis com o `scanf`
Segue o código
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.