Ir ao conteúdo

Posts recomendados

Postado

Boa noite pessoal, tudo bem? Então, tenho um probleminha com meu código, o objetivo dele é cadastrar pessoas e armazenar os nomes em uma array, dai quando eu terminar de cadastrar, eu posso ter a opção de pesquisar os nomes novamente e verificar se eles estão no "banco de dados" digamos assim. Ele está funcionando em partes, pois quando cadastro os nomes, e retorno ao menu inicial, as vezes ele salva o nome e encontra todos os nomes que digitei, porém, quando peço para pesquisar outro nome, ou voltar ao menu inicial, registrar outro nome e pesquisar novamente, ele perde alguns nomes que cadastrei anteriormente, fica meio confuso de entender falando, então vou mandar o código para vocês verem como eu estruturei isso tudo, não tenho conhecimentos avançados em C, comecei a estudar faz 3 dias, então peço perdão pelos erros e pela falta de noção de indentação do código, não estou acostumado com ele ainda hehe.
 

 

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


int choice,yn;
int num;
int i;
int cont;
char nomes[10][100];
char name[50];
char voider;


int main(){



void menu(void);

menu();

return 0;

}



void menu(void){

void cadastro(void);
void pesquisa(void);

printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/-----------------------G A T H E R E R V2.0 --------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n\nPress enter to continue...");
gets(&voider);


system("cls");

printf("\n/----------------------------------------------------------------------/");
printf("\n/-----------------------M A I N   M E N U -----------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/---1 - REGISTER PEOPLE ===============================================/");
printf("\n/---2 - SEARCH PEOPLE =================================================/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/---Select a option----------------------------------------------------/\n");
scanf("%d",&choice);
fflush(stdin);

switch (choice){

  case 1:

  system("cls");
  cadastro();
break;

  case 2:

  system("cls");
  pesquisa();
  break;

}
}



void cadastro(void){
  void menu(void);

int g;
g = 0;

i = 0;

  while(g == 0){


  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------REGISTER PEOPLE----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Enter with the person's name: ------------------------------/\n");
  scanf("%s",nomes[i]);
  fflush(stdin);
      i = i + 1;
  system ("cls");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------REGISTER PEOPLE----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Do you want to register another person?: -------------------/");
  printf("\n/'Y = 1' 'N = 2'-------------------------------------------------------/\n");
  scanf("%d",&yn);

  if(yn == 1){
   system("cls");
  }
  else{

 menu();


  }
}
}


void pesquisa(void){

  void menu(void);
int g;
g = 0;
i = 0;
  while(g == 0){



  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------SEARCH PEOPLE -----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Enter the name to search in database: ----------------------/\n");
  fflush(stdin);
  gets(name);

  if(strcmp(nomes[i],name) == 0){

system("cls");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/---------------------------SEARCH PEOPLE -----------------------------/");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/---------The following name has been found: %s                         ",nomes[i]);
    i = i + 1;
}
else{
    printf("\n/---------No name has been found in database --------------------------/");
  }
    printf("\n/---------Do you want to try another search? --------------------------/");
    printf("\n/'Y = 1' 'N = 2'-------------------------------------------------------/\n");
    scanf("%d",&yn);
    if(yn == 1){
     system("cls");
    }
    else{

   menu();



 }
 }
}

 

Postado

Do jeito que está, seu programa está armazenando os números sempre nas mesmas posições. você tem que criar um variável para armazenar quantos nomes já foram entrados e ir adicionando sem reescrever os que já foram entrados.

int index=0; //variável global 
(...)
void cadastro(void){
 // void menu(void);
 menu(); //para chamar o metodo, basta assim

int g;
g = 0;

while(g == 0){
(..)
if (index < 10) //só armazena 10 nomes
{               
  scanf("%s",nomes[index]);
  fflush(stdin);
  index = index + 1;
}
  

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...