[Resolvido] problema com um exercicio
ola a todos ... to com um código aqui que estou tendo problema.. esse é um exercicio da secretária aqui da empresa que faz SI , ai pediu minha ajuda .. ai estou a fazer o exercicio pra ela.. só que não so programador C .. ai li algumas apostilas aqui e fiz isso .. mais to com algumas duvidas..
algumas coisas estão funcionando e como dizem no POG .. se ta funcionando não mecha!
CODE
//===| Chamada de Bibliotecas |================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
//===| Estrutura de Dados |====================================================
typedef struct aluno{
int Matricula;
char Nome[40];
char Sexo;
char Nascimento[11];
struct aluno *Prox, *Ante;
};
typedef struct Lista {
struct aluno *inicio, *fim;
int total;
};
//===| Variáveis Globais |======================================================
Lista L;
int Opcao;
//===| Procedimentos e Funções |================================================
void inicializaLista(struct Lista *lista){
/* Procedimento que prepara a Lista L para a execução do programa. Essa lista
é esvaziada. */
lista->inicio = NULL;
lista->fim = NULL;
lista->total = 0;
printf("\n\n =====> Lista Esvaziada e pronta para receber alunos <====\n\n");
}
//===| inserir alunos|=========================================================
void insereAluno(struct Lista *li){
/* Procedimento que insere um novo aluno na Lista L de maneira que a Lista
permaneça ordenada por número de matricula. */
//variáveis locais:
struct aluno *novo, *atual, *anterior;
//criação de novo REGISTRO (struct) de aluno apontado por NOVO:
novo = (aluno *)malloc(sizeof(aluno));
//Cadastro do ALUNO pelo USUARIO-FINAL (Entrada de Dados):
system("CLS");
printf("\n\n\n ==========| INSERE ALUNO |==========\n\n");
printf(" Matricula: ");
scanf("%d", &novo->Matricula);
printf("\n\n Nome: ");
gets(novo->Nome);
gets(novo->Nome);
printf("\n\n Sexo (M ou F): ");
scanf("%c", &novo->Sexo);
printf("\n\n Nascimento (dd/mm/aaaa): ");
gets(novo->Nascimento);
gets(novo->Nascimento);
//Inclusão do REGISTRO (struct) na Lista L:
if ((li->inicio == NULL) && (li->fim == NULL)){
//A Lista L está vazia: este registro será o único.
li->inicio = novo;
li->fim = novo;
li->total = 1;
novo->Prox = NULL;
novo->Ante = NULL;
} else {
//A Lista L não está vazia: iniciar busca na Lista para identificar ponto de inserção ...
atual = li->inicio; //atual aponta para o primeiro aluno da lista.
while (atual != NULL){
if (atual->Matricula > novo->Matricula) {
//Deve-se inserir o NOVO registro antes do apontado por ATUAL
if (atual == li->inicio) {
//inserir antes do primeiro registro: inserir no INICIO
novo->Prox = atual;
novo->Ante = NULL;
atual->Ante = novo;
li->inicio = novo;
novo = NULL; //controle para saber se novo foi inserido
} else {
//inserir no meio da Lista L
novo->Prox = atual;
anterior = atual->Ante;
novo->Ante = anterior;
atual->Ante = novo;
anterior->Prox = novo;
novo = NULL; //controle para saber se novo foi inserido
}//if-else
}//if
atual = atual->Prox;
}//while
if (novo != NULL){
//inserindo no final da Lista L.
novo->Prox = NULL;
novo->Ante = li->fim;
anterior = li->fim;
anterior->Prox = novo;
li->fim = novo;
}//if
}//if-else
printf("\n\n\n ===| Aluno INSERIDO com SUCESSO |===\n\n\n");
system("PAUSE");
}
void listarAlunos(Lista li){
/* Procedimento que exibe Matricula e Nome de todos os ALUNOS que fazem
parte da Lista L. */
struct aluno *atual;
system("CLS");
printf("\n\n\n =====| Listagem de Alunos |=====\n\n\n");
atual = li.inicio;
while (atual != NULL){
printf(" %d - %s\n", atual->Matricula, atual->Nome);
atual = atual->Prox; //atual move para o seguinte registro de aluno
}//while
printf("\n\n");
system("PAUSE");
}
void listarAlunosSexo(Lista li){
/ Procedimento que exibe Matricula e Nome de todos os ALUNOS por Sexo. /
char escsexo;
struct aluno *atual;
atual = li.inicio;
system("CLS");
printf("\n\n\n =====| Listagem de Alunos Por Sexo |=====\n\n\n");
printf("\n\n Selecione o sexo M ou F:\n");
escsexo = getch();
while (atual != NULL){
if(escsexo == atual->Sexo){
printf(" %d - %s\n",atual->Matricula,atual->Nome);
}
atual = atual->Prox; //fecha o if
}//fecha o while
printf("\n\n");
system("PAUSE");
}
void pesquisamatricula(Lista li){
// Procedimento para pesquisar na lista os alunos por matricula
int pesqmatricula;
struct aluno *atual;
atual = li.inicio;
system("CLS");
printf("\n\n\n =====| Pesquisar aluno por Matricula |=====\n\n\n");
printf("\n\n Digite o numero da Matricula:");
scanf("%d",&pesqmatricula);
while (atual != NULL){
if(pesqmatricula == atual->Matricula){
printf(" %d - %s - %c - %s\n",atual->Matricula,atual->Nome,atual->Sexo,atual->Nascimento);
}//fecha o if
atual = atual->Prox;
}
printf("\n\n");
system("PAUSE");
}
void pesquisanomecompleto(Lista li){
//procedimento para pesquisa na lista por nome completo
char nomecompleto[40];
struct aluno *atual;
atual = li.inicio;
system("CLS");
printf("\n\n\n =====| Pesquisar aluno por Nome Completo |=====\n\n\n");
printf("\n\n Digite o nome Completo do aluno:");
gets(nomecompleto);
//gets(nomecompleto);
while (atual != NULL){
if(nomecompleto == atual->Nome){
printf(" %d - %s - %c - %s\n",atual->Matricula,atual->Nome,atual->Sexo,atual->Nascimento);
}
else{
printf("não foi encontrado nenhum aluno com este nome");
// printf(atual->Nome);
}//fecha o if
atual = atual->Prox;
}
printf("\n\n");
system("PAUSE");
}
int Menu(){
/ Função de Menu que permite ao usuário-final selecionar a opção desejada. /
//variável local:
int op;
system("CLS");
printf("\n\n\n =====| M E N U |=====\n\n");
printf(" 0 - Sair (Encerrar Aplicativo)\n\n");
printf(" 1 - INSERIR novo ALUNO.\n");
printf(" 2 - LISTAR todos os ALUNOS.\n");
printf(" 3 - LISTAR ALUNOS por SEXO.\n");
printf(" 4 - CONSULTAR ALUNO por Matricula.\n");
printf(" 5 - CONSULTAR ALUNO por Nome Completo.\n");
printf(" 6 - CONSULTAR ALUNO por TRECHO de Nome.\n");
printf(" 7 - EXCLUIR ALUNO.\n\n\n");
printf(" SELCEIONE OPCAO ==> ");
scanf("%d", &op);
if ((op > 7) || (op < 0)){
printf("\n\n\n ERRO - Opcao INVALIDA !!!");
printf("\n\n Tente Outra Vez !\n\n\n");
system("PAUSE");
}
return op;
}
//===| Programa Principal |====================================================
int main(){
inicializaLista(&L);
do {
Opcao = Menu();
switch (Opcao){
case 1: insereAluno(&L); break;
case 2: listarAlunos(L); break;
case 3: listarAlunosSexo(L); break;
case 4: pesquisamatricula(L);break;
case 5: pesquisanomecompleto(L);break;
}//switch
} while (Opcao != 0);
}
isso é tudo que fiz até gora
as opções do menu 1,2,3 e 4 estão funcionando.. estou com problema na opção 5 que é
pesquisar pelo nome.. eu achei q seria o mais facil .. mais não to conseguindo nem a ***..
mais poo não tenho conhecimento quase nenhum em C .. e consegui fazer mta coisa..
acho q até coisa mais dificil do que essa pesquisa.. mais fazer oq ..
já tentei usar scanf , gest .. mais na hora de usar o if pra comparar com os cadastrados não encontra..
como eu faço essa comparação alguem pode me ajudar?
Discussão (7)
Carregando comentários...