Ir para conteúdo
Fórum Script Brasil
  • 0

Listagem de dados não funciona e ação de pesquisa ocorre crash.


Guzaop

Pergunta

Olá pessoal, estou fazendo um trabalho para a faculdade, bem estou entrando na programação agora e aprendendo C.

Estou fazendo um programa para Cadastrar alunos, mas não consigo achar os meus erros. Por enquanto o programa possui as opções de Cadastrar, Listar e Pesquisar, mas somente a cadastrar funciona corretamente =( .

Se puderem ajudar agradeço.

#include <stdio.h>
#include <stdlib.h>
#define SIZE 50

//Variáveis globais
char nome;
int cpf;
int rg;
char curso;
int telefone;
int op;

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

//Função principal
int main(void){

//Menu

do{
printf("\t\t\t\t--------");
printf("\n\t\t\t\t| Menu |");
printf("\n\t\t\t\t--------");
printf("\n\t\t Bem-vindo. Escolha o que deseja executar.");
printf("\n----------------");
printf("\n 1 - Cadastrar |"); //Layout menu
printf("\n 2 - Listar |");
printf("\n 3 - Pesquisar |");
printf("\n 4 - Sair |\n");
printf("----------------\n");
scanf("%d", &op);

switch(op){
case 1:
cadastro();
break;
case 2:
lista();
break;
case 3:
pesquisa();
break;
case 4:
system("exit");
break;
default:
printf("\nOpcao invalida.\n");
break;
}
}while(op!=4);
}
//Função cadastro
void cadastro(){
static int linha;
do{
printf("============================================");
printf(" \nDigite o Nome: ");
scanf("%s", &nome[linha]);

printf(" \nDigte o CPF: ");
scanf("%d", &cpf[linha]);

printf(" \nDigite o RG: ");
scanf("%d", &rg[linha]);

printf(" \nDigite o Curso: ");
scanf("%s", &curso[linha]);

printf(" \nDigite o Telefone: ");
scanf("%d", &telefone[linha]);

printf("\n Digite 1 para continuar cadastrando ou outro valor para voltar ao menu.\n");
scanf("%d", &op);
linha++;
}while(op==1);
} //Fim da função cadastro

//Função lista
void lista(){
int i;

for(i=0; i>SIZE; i++){
if(cpf>0){

printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome, cpf, rg, curso, telefone);
}else{
break;
}
}getchar();
getchar();
}
//Fim da função lista

//Função pesquisa
void pesquisa(){
printf("============================================");
int i;
int cpfPesquisa;
char nomePesquisa;
do{
printf(" \nDigite 1 para pesquisar por Nome ou 2 para pesquisar por CPF.\n");
scanf("%d", &op);

switch(op){
case 1:
printf(" \nDigite o Nome que procura: ");
scanf("%s", &nomePesquisa);
for(i=0; i<SIZE; i++){
if(strcmp(nome, nomePesquisa)==0);
printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome, cpf, rg, curso, telefone);
}
break;
case 2:
printf(" \nDigite o CPF que procura: ");
scanf("%d", &cpfPesquisa);
for(i=0; i<SIZE; i++){
if(cpf==cpfPesquisa);
printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome, cpf, rg, curso, telefone);
}
break;
default:
printf("\nOpcao invalida.");
break;
}
printf ("\n Digite 1 para continuar pesquisando ou outro valor para voltar ao menu.");
scanf("%d", &op);
}while(op==1);
} //Fim função pesquisa

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Tá ae um exemplo deste código compare e tire suas conclusões o código esta todo comentado e funcionando boa sorte.

Att.

Barao

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/*Necessário para strcmp();*/
#include <conio.h>/*Necessário para getch();*/

#define SIZE 50
  //Variáveis globais
char nome[SIZE][SIZE];/*Matriz 50 x 50 Suporta 50 strings com 50 posicoes */
int cpf[SIZE];
int rg[SIZE];
char curso[10][SIZE];
int telefone[SIZE];
int j=0; //só para controle de lacos
int op;
void cadastro();
void lista();
void pesquisa();
 
//Função principal
int main(int argc, char *argv[]){/*Adicioneir mais dois argumentos na main por seguranca*/
//Menu
   do{
   	
   	system("cls");
    printf("\t\t\t\t--------");
    printf("\n\t\t\t\t| Menu |");
    printf("\n\t\t\t\t--------");
    printf("\n\t\t Bem-vindo. Escolha o que deseja executar.");
    printf("\n----------------");
    printf("\n 1 - Cadastrar |");                //Layout menu
    printf("\n 2 - Listar    |");
    printf("\n 3 - Pesquisar |");
    printf("\n 4 - Sair      |\n");
    printf("----------------\n");
    scanf("%d", &op);
   
     switch(op){
case 1:
cadastro();
break;
case 2:
       lista();
   break;
case 3:
   pesquisa();
break;
case 4:
       system("exit");
break;
default:
printf("\nOpcao invalida.\n");
break; 
}
   }while(op!=4);
   
   return 0;
}
//Função cadastro
void cadastro(){

static int linha = 0;/*Sempre inicie variaveis de controle de laco com zero o valor necessário*/

do{
	system("cls");/*Limpa a tela só pra ficar com um visual melhor*/

printf("============================================");
printf(" \nDigite o Nome: ");
scanf("%s", nome[linha]);/*não é necessário &(E comercial) em scanf para pegar strings) */
printf(" \nDigte o CPF: ");
scanf("%d", &cpf[linha]);
printf(" \nDigite o RG: ");
scanf("%d", &rg[linha]);
printf(" \nDigite o Curso: ");
scanf("%s", curso[linha]);/*não é necessário &(E comercial) em scanf para pegar strings) */
printf(" \nDigite o Telefone: ");
scanf("%d", &telefone[linha]);
printf("\n Digite 1 para continuar cadastrando ou outro valor para voltar ao menu.\n");
scanf("%d", &op);
linha++;
j++;/*Cada cadastro realizado soma +1 a variável j assim na hora de listar vou saber a quantidade cadastros realizados*/

}while(op==1);
} //Fim da função cadastro
  //Função lista
void lista(){

int i;
for(i=0; i < j; i++){ /*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/  
	 	  
/*if(cpf[i]>0){          if sem necessidade*/

printf("\nNome: %s \nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]);

/*break; Sem necessidade não entendi muito o seu uso aqui*/

printf("\n\n");

}
getch();
}
/*getchar();porque getchar duas veses em seguida ?*/

/*} chave sem necessidade*/
//Fim da função lista
  //Função pesquisa
void pesquisa(){
printf("============================================");
int i;
int cpfPesquisa;
char nomePesquisa[SIZE];
do{
system("cls");
printf(" \nDigite 1 para pesquisar por Nome ou 2 para pesquisar por CPF.\n");
scanf("%d", &op);
switch(op){
case 1:  system("cls");
         printf(" \nDigite o Nome que procura: ");
           scanf("%s", nomePesquisa);/*não é necessário &(E comercial) em scanf para pegar strings*/
             for(i=0; i<j; i++){/*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/ 
            if(strcmp(nome[i], nomePesquisa)==0){                //poderia tirar o ==0 que funcionaria também
               printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]);
           }
           system("cls");
           getch();
break;
			 }
case 2:
	 system("cls");
       printf(" \nDigite o CPF que procura: ");
         scanf("%d", &cpfPesquisa);
           for(i=0; i<j; i++){/*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/ 
           	
            if(cpf[i]==cpfPesquisa);
               printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]);
           
		   }     break;
             
default:
printf("\nOpcao invalida.");
break;  
}
printf ("\n Digite 1 para continuar pesquisando ou outro valor para voltar ao menu.");
scanf("%d", &op);
}while(op==1);
} //Fim função pesquisa

Editado por Barao
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...