Ir ao conteúdo
  • Cadastre-se

Angelripper

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

2
  1. Cara, muito obrigado, deu certo, já estava quase desistindo.
  2. Fiz dessa forma que você falou, mas mesmo assim não esta dando certo.
  3. Boa noite, queria pedir a ajuda de vocês, pois estou fazendo um programa em c que simula cadastro de funcionários, e estou com muita dificuldade numa função que pesquisa o nome de um funcionário, eu informo um nome que esta cadastrado mas o programa não faz a devida comparação com o nome já armazenado, segue o código. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MAX 10 void inserir(char nome[10][50],int matricula[10], float salario[10], int *cont); void listar(char nomes[10][50],int matriculas[10], float salarios[10], int *cont); void excluir(char nome[10][50],int matricula[10], float salario[10], int *cont); void pesquisar(char nome[10][50],int matricula[10], float salario[10], int *cont); void ordenar(char nome[10][50],int matricula[10], float salario[10], int *cont); void ler(char nome[10][50],int matricula[10], float salario[10], int *cont); void escrever(char nome[10][50],int matricula[10], float salario[10], int *cont); int main(){ char nome[10][50]; int matricula[10]; float salario[10]; char seguir='s'; int opcao; int cont=0; ler(nome, matricula, salario, &cont);//Função para carregar os dados do arquivo, se ja existir. while(seguir =='s') { system("cls"); ///apagar tela printf(" [ Cadastro de Funcionarios ] \n\n"); printf("1) NOVO CADASTRO \n"); printf("2) REMOVER FUNCIONARIO\n"); printf("3) LISTAR TODOS OS FUNCIONARIOS\n"); printf("4) PESQUISAR \n"); printf("0) SAIR "); printf("\n\n > > > Digite sua opcao: "); scanf("%d%*c",&opcao); printf("\n"); system("cls"); switch(opcao) { case 1: { printf("INSERINDO NOVO REGISTRO... \n\n"); if(cont < MAX) { inserir(nome, matricula, salario, &cont); printf("DADOS INSERIDOS COM SUCESSO!!!\n\n"); } else { printf("O Sistema de Cadastro esta no limite!\n\n"); } break; } case 2: { if(cont == 0) { printf("não há dados para serem excluidos!\n\n"); } else { excluir(nome, matricula, salario, &cont); } break; } case 3: { if(cont == 0) { printf("não há dados no sistema! %d\n\n",cont); } else { printf(" Listando os Funcionarios cadastrados...\n\n"); listar(nome, matricula, salario,&cont); } break; } case 4: { if(cont == 0) { printf("não há dados no sistema!\n\n"); } else { printf("PESQUISANDO DADO...\n\n"); pesquisar(nome, matricula, salario,&cont); } break; } case 0: { printf ("SAIR\n"); system ("pause"); escrever(nome, matricula, salario, &cont); return 0; break; } default: printf(" ( OPCAO INVALIDA! )\n\n"); break; } printf(" CONTINUAR?(S/N) "); scanf("%s",&seguir); } escrever(nome, matricula, salario, &cont); return 0; } void inserir(char nome[10][50],int matricula[10], float salario[10], int *cont) { fflush(stdin); printf("Informe o nome do funcionario:\n"); fgets(nome[*cont],50,stdin); fflush(stdin); printf("Digite o numero da matricula:\n"); scanf("%d",&matricula[*cont]); fflush(stdin); printf("informe o salario:\n"); scanf("%f",&salario[*cont]); fflush(stdin); *cont = *cont + 1; ordenar(nome, matricula, salario,cont); } void listar(char nomes[10][50],int matriculas[10], float salarios[10], int *cont) { int i; for(i = 0;i < *cont; i++) /// listar usando vetores { printf ("\nNome: "); puts(nomes); printf("Matricula: %d",matriculas); printf("\nSalario: %.2f\n\n",salarios); } } void excluir(char nome[10][50],int matricula[10], float salario[10], int *cont) { int i,j; int pesquisa; printf("Digite a Matricula do funcionario que deseja excluir\n"); scanf("%d",&pesquisa); for(i=0;i<*cont;i++){ if(pesquisa==matricula){ for(j=i;j<((*cont)-1);j++){ matricula[j] = matricula[j+1]; strcpy(nome[j],nome[j+1]); } printf(" DADO EXCLUIDO COM SUCESSO!\n\n"); *cont = *cont - 1; } printf("Matricula nao encontrada\n"); } ordenar(nome, matricula, salario,cont); } void ordenar(char nome[10][50],int matricula[10], float salario[10], int *cont){ int i,j,aux; float aux2; char temp[50]; for(i = 1; i < *cont; i++){ for (j = 0; j < (*cont)-1; j++){ if(strcmp(nome[j],nome[j+1]) > 0){ strcpy(temp,nome[j]); strcpy(nome[j],nome[j+1]); strcpy(nome[j+1],temp); aux = matricula[j]; matricula[j] = matricula[j+1]; matricula[j+1] = aux; aux2 = salario[j]; salario[j]= salario[j+1]; salario[j+1] = aux2; } } } } void pesquisar(char nome[10][50],int matricula[10], float salario[10], int *cont) { int i,j, contador,pergunta; float dado; char dado2[50]; printf("||||||| PESQUISA ||||||\n"); printf("\nPor salario digite 1:\nPor Nome digite 2:\n"); scanf("%d",&pergunta); if(pergunta == 1){ printf("digite o salario que deseja pesquisar\n"); scanf("%f", &dado); for(i = 0;i < *cont; i++) { if(dado == salario) { printf("Dado Encontrado \n\n"); printf("Nome: %s",nome); printf("Matricula: %d\n",matricula); printf("Salario: %f",salario); printf("\n"); contador = contador + 1; } } if(cont == 0) { printf(" Registro não Encontrado!\n\n"); } } if(pergunta == 2){ printf("digite o nome que deseja persquisar\n"); scanf("%s", &dado2[50]); //fflush(stdin); //fgets(dado2,50,stdin); //fflush(stdin); //printf ("%s", dado2); //s = strlen(dado2); char nm[50]; for(i = 0;i < *cont; i++) { if(dado2 == nome) printf ("[%s][%s]", nome, dado2); { printf("\nDado Encontrado \n\n"); printf("NOME: %s",nome); printf("MATRICULA: %d\n",matricula); printf("SALARIO: %f",salario); printf("\n"); contador = contador + 1; } } if(cont == 0) { printf(" Registro não Encontrado!\n\n"); } } } void ler (char nome[10][50],int matricula[10], float salario[10], int *cont) //função para criar o arquivo, e ler os dados { FILE *arquivo; //declarando apontador do tipo FILE que irá apontar para o arquivo desejado. int i; char aux[200]; arquivo = fopen("dados.txt", "r");//Abre o aquivo no modo leitura. if(arquivo == NULL) { arquivo = fopen("dados.txt", "w");//Se não existir o arquivo, a função cria. fclose(arquivo); } else { fscanf(arquivo, "Pessoas cadastradas: %d\n", cont); for(i = 0; i < *cont; i++) { fgets(aux, 100, arquivo); //leitura de string //strtok(aux, "\n"); //função pra retirar o \n que pura linha da string lida. strcpy(nome, aux); //copiando o aux pra posição do array de nomes. fscanf(arquivo, "Matricula: %d\n", &matricula); fscanf(arquivo, "Salario: %f\n\n", &salario); } fclose(arquivo); } return ; } void escrever (char nome[10][50],int matricula[10], float salario[10], int *cont) //função para escrever os dados no arquivo. { FILE *arquivo; int i; arquivo = fopen("dados.txt", "w"); if(arquivo == NULL) //Ele não conseguiu abrir o arquivo/criar. { printf("Erro. \n"); } else { fprintf(arquivo, "Pessoas cadastradas: %d\n", *cont); //Escrevendo a quantidade no arquivo, para ser recuperado quando o programa for aberto novamente for(i = 0; i < *cont; i++) { fputs( nome, arquivo); fprintf(arquivo, "Matricula: %d\n", matricula); fprintf (arquivo, "Salario: %.2f\n\n", salario); } fclose(arquivo); } return ; }

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...