Procurar
Últimos assuntos
Quem está conectado?
Há 1 usuário online :: 0 registrados, 0 invisíveis e 1 visitante Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 192 em Ter Out 26, 2021 6:07 am
Cadastro de aluno ( Lista simplesmente encadeada )
Página 1 de 1
Cadastro de aluno ( Lista simplesmente encadeada )
- Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Temp
{
int matricula;
char nome[50];
char curso[50];
char datnasc[30];
struct Temp *prox;
}lista;
// cria o inicio da lista
lista *inicio;
//--------------------------------------------------------
// Funcao que define a lista como vazia.
void criaLista()
{
inicio = NULL;
}
int cadastro()
{
lista *ponteiro;
ponteiro = (lista *) malloc(sizeof(lista));
if (ponteiro==NULL)
{
printf("Erro de alocacao\n");
return 0;
}
printf("Digite a matricula:");
scanf("%d",&ponteiro->matricula);
printf("Digite o nome:");
scanf(" %[^\n]",ponteiro->nome);
printf("Digite o curso:");
scanf(" %[^\n]",ponteiro->curso);
printf("Digite a data de nascimento:");
scanf(" %[^\n]",ponteiro->datnasc);
ponteiro->prox = NULL;
if (inicio==NULL)
{
inicio = ponteiro;
}
else
{
ponteiro->prox = inicio;
inicio = ponteiro;
}
return 1;
}
void imprime()
{
lista *ponteirolista;
if (inicio == NULL) // Caso a lista nao esteja vazia
{
printf("funcao-impressao>>lista-null--\n\n");
return;
}
ponteirolista = inicio;
while (ponteirolista !=NULL) {
printf("Matricula = %d\n",ponteirolista->matricula);
printf("Nome = %s\n",ponteirolista->nome);
printf("Curso = %s\n",ponteirolista->curso);
printf("Data de Nascimento = %s\n",ponteirolista->datnasc);
ponteirolista = ponteirolista->prox;
getchar();
getchar();
}
printf("funcao-impressao>>fim-da-lista ---\n\n");
}
void imprimeponterio(lista *ponteirolista)///para imprimir resultado da função busca
{
if (ponteirolista == NULL) // Caso a função busca restorne null
{
printf("Não achou!!");
return;
}
printf("funcao-impressao--ponteiro ---\n\n");
printf("Matricula = %d\n",ponteirolista->matricula);
printf("Nome = %s\n",ponteirolista->nome);
printf("Curso = %s\n",ponteirolista->curso);
printf("Data de Nascimento = %s\n",ponteirolista->datnasc);
getchar();
getchar();
}
///-------------------------------------------------pesquisa
///pesquisa por matricula
lista *pesquisamatricula()
{
int dado;
printf("Digite a matricula:");
scanf("%d",&dado);
lista *ponteiro;
if (inicio == NULL)
{
return NULL; // Lista Vazia
}
// Caso a lista nao esteja vazia
ponteiro = inicio;
while (ponteiro !=NULL) {
printf("procurando %d==%d\n",dado,ponteiro->matricula);///comentar parar para de mostra lixo na tela
getchar();///comentar ai ñ pede enter
if (ponteiro->matricula == dado) // achou !!
{
printf("\nACHOU %d==%d!!!\n",ponteiro->matricula,dado);
return (ponteiro); // retorna um ponteiro para função imprimir ponteiro
}
else
{
ponteiro = ponteiro->prox;
}
}
return NULL;
}
lista *pesquisanome()
{
char pesq[50];
printf("Digite o nome:");
scanf(" %[^\n]",pesq);
lista *ponteiro;
if (inicio == NULL)
{
return NULL; // Lista Vazia
}
// Caso a lista nao esteja vazia
ponteiro = inicio;
while (ponteiro !=NULL) {
printf("procurando %s==%s\n",pesq,ponteiro->nome);///comentar parar para de mostra lixo na tela
getchar();///comentar ai ñ pede enter
if (strcmp (ponteiro->nome,pesq)== 0 ) // achou !!
{
printf("\nACHOU %s==%s!!!\n",ponteiro->nome,pesq);
return (ponteiro); // retorna um ponteiro para função imprimr
}
else
{
ponteiro = ponteiro->prox;
}
}
return NULL;
}
///esvazia a fila
void libera (lista* l)
{
printf("\nFuncao liberar\n");
lista* ponteiro = l;
while (ponteiro != NULL)
{
lista* t = ponteiro->prox;
free(ponteiro);
ponteiro = t;
}
}
///remove elemento
int removedado(int dado)
{
lista *ptr, *antes;
if (inicio==NULL)
{
return 0; // Lista vazia !!!
}
else
{ // Caso a lista nao esteja vazia
ptr = inicio;
antes = inicio;
while (ptr !=NULL)
{
if (ptr->matricula == dado) // achou !!
{
if (ptr == inicio) // se esta removendo o primeiro da lista
{
inicio = inicio->prox;
free(ptr);
return 1; // removeu !!
}
else // esta removendo do meio da lista
{
antes->prox = ptr->prox; // Refaz o encadeamento
free(ptr); // Libera a area do nodo
return 1; // removeu !!
}
}
else // continua procurando no prox. nodo
{
antes = ptr;
ptr = ptr->prox;
}
}
return 0; // Nao achou !!!
}
}
int main()
{
criaLista();///iniciar a lista
int op=1;
for(;;) //loop infinito ate condicao de parada 'break'
{
cadastro();
printf("Menu cadastro:\n1_Novo\t0_Sair:");
scanf("%d",&op);
if(op==0)//caso 0 sair do loop
{
break;
}
}
printf(">>Dados cadastrados<<\n");
imprime();///imprimir os dados cadastrados
//-------------
voltamenu :
printf("Menu:\n1_Pesquisa por Matricula\n2_Pesquisa por Nome\n3_Remover\n4_Imprimi\n0_Sair:\n:");
scanf("%d",&op);
switch (op)
{
case 1:
{
imprimeponterio(pesquisamatricula());///pesquisa a matricula e retorna para funcao o ponterio para imprimir
break;
}
case 2:
{
imprimeponterio(pesquisanome());
break;
}
case 3:
{
imprime();
removedado(pesquisamatricula()->matricula);///a pesquisa retorna um ponteiro para a funcao remover
printf("Removido... imprimindo lista \n");
imprime();
break;
}
case 4:
{
imprime();
break;
}
case 0:
{
libera (inicio);
return 0;
break;
}
}
goto voltamenu; //simplesmente volta ao menu
return 0;
}
juk- Mensagens : 262
Data de inscrição : 02/04/2012
Tópicos semelhantes
» Programa para calcular o tempo para encontrar o último elemento de uma lista simplesmente
» Cadastro Lava Jato
» LISTA DO JORCIVAN VETOR
» Lista de exercicios Ltp I
» Cadastro Lava Jato
» LISTA DO JORCIVAN VETOR
» Lista de exercicios Ltp I
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Seg Jan 02, 2023 2:13 pm por juk
» Cypecad 2019
Seg Jan 02, 2023 1:41 pm por juk
» Atualizando é instalando o IExplorer 11 no windows 7
Ter Ago 30, 2022 10:54 pm por juk
» COMO HABILITAR INTERNET EXPLORER NO WINDOWS 10
Sex Abr 29, 2022 6:43 pm por juk
» Usando o Monitor de Recursos do sistema para identificar processos Associados.
Qua Abr 06, 2022 10:19 am por juk
» Fazendo backup do anydesk
Ter Abr 05, 2022 7:30 pm por juk
» Recuperando Favoritos, senhas apos formatar o navegador (Mozilla Firefox ou Chrome)
Ter Abr 05, 2022 7:28 pm por juk
» Comando para tentar recuperar o windows
Qua Out 27, 2021 5:52 pm por juk
» NGROK para divulgação de site remoto
Ter Set 29, 2020 9:40 am por juk