JACKCB 0 Denunciar post Postado Maio 21, 2013 #include <stdio.h> #include <stdlib.h> #include <string.h> #define max 20 typedef struct Data TipoData; struct Data{ int dia; int mes; int ano; }; struct Funcionario{ int matricula; char nome[30]; char estadoCivil[9]; char endereco[40]; char cargo[30]; float salario; int cont; TipoData nascimento; }Cadastro[max]; void inicia_lista(void), enter(void); void delete(void), lista(void); void altera(void); int menu(void), procurar(void); int main(void) { char escolha; inicia_lista(); // Inicializa a estrutura for(; ;){ escolha = menu(); switch (escolha) { case 1: enter();break; case 2: delete();break; case 3: lista();break; case 4: altera();break; case 5: busca();break; case 6: exit(0);break; } } } void inicia_lista(void){ register int t; for (t = 0; t < max; ++t) Cadastro[t].nome[0] = '\0'; } int menu(void){ char s[80]; int c; fflush(stdin); printf("\n(1)- Cadastrar"); printf("\n(2)- Excluir"); printf("\n(3)- Listar"); printf("\n(4)- Alterar"); printf("\n(5)- Procurar"); printf("\n(6)- Sair"); do { printf("\n > "); fflush(stdout); gets(s); c = atoi(s); } while (c < 0 || c > 5); return c; } // Verifica se o vetor está cheio senão faz o cadastro void enter(void){ int Cad; Cad = procurar(); if (Cad == -1) { printf("\nO vetor está cheio!\n"); return; } // Inicio do cadastro fflush(stdin); printf("\nInforme a matricula do funcionário: "); fflush(stdout); scanf("%d",&Cadastro[Cad].matricula); fflush(stdin); printf("\nDigite o nome do funcionario: "); fflush(stdout); gets(Cadastro[Cad].nome); printf("\nData de Nascimento: "); fflush(stdout); scanf("%d %d %d",&Cadastro[Cad].nascimento.dia, &Cadastro[Cad].nascimento.mes, &Cadastro[Cad].nascimento.ano); fflush(stdin); printf("\nEstado civil do funcionário: "); fflush(stdout); gets(Cadastro[Cad].estadoCivil); fflush(stdin); printf("\nEndereco do funcionário: "); fflush(stdout); gets(Cadastro[Cad].endereco); fflush(stdin); printf("\nCargo do funcionário: "); fflush(stdout); gets(Cadastro[Cad].cargo); fflush(stdin); printf("\nSalário: "); fflush(stdout); scanf("%f",&Cadastro[Cad].salario); } // Fim do cadastro // Encontra uma estrutura não usada int procurar(void){ register int t; for (t = 0; Cadastro[t].nome[0] && t < max; ++t); if (t == max) return -1; // nenhum elemento livre return t; } // Pede o endereco do vetor onde se encontra o cadastro p/ exclusão void delete(void){ register int converte; char s[80]; printf("\nDigite o endereço do funcionário que deseja excluir: "); fflush(stdout); gets(s); converte = atoi(s); // converte s em num int if (converte >= 0 && converte < max) Cadastro[converte].nome[0] = '\0'; } void lista(void){ register int t; for (t = 0; t < max; ++t) { if (Cadastro[t].nome[0]) { printf("\nMatricula: %d",Cadastro[t].matricula); printf("\nNome: %s",Cadastro[t].nome); printf("\nData de Nascimento: %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes, Cadastro[t].nascimento.ano); printf("\nEstado Civil: %s",Cadastro[t].estadoCivil); printf("\nEndereço: %s",Cadastro[t].endereco); printf("\nCargo: %s",Cadastro[t].cargo); printf("\nSalário: %.2f",Cadastro[t].salario); printf("\nEndereço para exclusão: %d",t); printf("\n\n"); } } } void altera(void){ register int t; char s[80]; printf("\nDigite a posição do funcionario para alterar: "); fflush(stdout); gets(s); t = atoi(s); printf("\n\t\tDADOS DO FUNCIONÁRIO"); // Altera matricula fflush(stdin); printf("\nMatricula Atual: %d",Cadastro[t].matricula); fflush(stdin); printf("\nAlterar para: "); fflush(stdout); scanf("%d",&Cadastro[t].matricula); printf("\nMatricula alterada para: %d",Cadastro[t].matricula); //fim altera matricula printf("\n"); fflush(stdin); //Altera Nome printf("\nNome Atual: %s",Cadastro[t].nome); printf("\nAlterar para: "); fflush(stdout); gets(Cadastro[t].nome); printf("\nNome alterado para: %s",Cadastro[t].nome); //Fim Altera Nome printf("\n"); //Altera Data printf("\nData de Nascimento Atual: %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes, Cadastro[t].nascimento.ano); printf("\nAlterar para: "); fflush(stdout); scanf("%d %d %d",&Cadastro[t].nascimento.dia, &Cadastro[t].nascimento.mes, &Cadastro[t].nascimento.ano); printf("\nData de Nascimento alterada para %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes, Cadastro[t].nascimento.ano); // Fim altera Data printf("\n"); fflush(stdin); //Altera Estado Civil printf("\nEstado Civil Atual: %s",Cadastro[t].estadoCivil); fflush(stdin); printf("\nAlterar para: "); fflush(stdout); gets(Cadastro[t].estadoCivil); printf("\nEstado Civil alterado para: %s",Cadastro[t].estadoCivil); //Fim Altera Estado Civil printf("\n"); fflush(stdin); //Altera Endereco printf("\nEndereço Atual: %s",Cadastro[t].endereco); printf("\nAlterar para: "); fflush(stdout); gets(Cadastro[t].endereco); printf("\nEndereco alterado para: %s",Cadastro[t].endereco); //Fim altera endereco printf("\n"); fflush(stdin); //Altera Cargo printf("\nCargo Atual: %s",Cadastro[t].cargo); printf("\nAlterar para: "); fflush(stdout); gets(Cadastro[t].cargo); printf("\nCargo alterado para: %s",Cadastro[t].cargo); //Fim Altera Cargo printf("\n"); fflush(stdin); //Altera Salario printf("\nSalário Atual: %.2f",Cadastro[t].salario); printf("\nAlterar para: "); fflush(stdout); scanf("%f",&Cadastro[t].salario); printf("\nSalário alterado para: %.2f",Cadastro[t].salario); //Fim Altera Salario printf("\n"); printf("\nEndereço para exclusão: %d",t); printf("\n\n"); return t; } int busca(void){ char s[80]; register int t; int achou = 0; printf("\nDigite o nome: "); fflush(stdout); gets(s); for (t = 0; t <= 1; t++) { if (Cadastro[t].nome[0]) { printf("\nNome: %s",Cadastro[t].nome); } } return t; } Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Maio 21, 2013 Sugiro que utilize a tag CODE, quando for postar códigos. Facilita no entendimento do mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 22, 2013 E então...O que vc quer com isso? Já te digo pra tirar o fflush(stdin) e o gets daí. Compartilhar este post Link para o post Compartilhar em outros sites