Jump to content
Fórum Script Brasil
  • 0

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


Guzaop
 Share

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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

Edited by Barao
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647k
×
×
  • Create New...