#include <stdio.h>
#include <stdlib.h>
void BuscarMatricula( ) ;
void Inserir( ) ;
void Exibir( ) ;
void Remover( ) ;
int menu( ) ;
void OrdenaNome( ) ;
typedef struct registro {
char nome[ 50 ] ;
int matricula;
float nota;
struct registro * prox;
} Registro;
int menu( ) {
int op;
printf ( "\n \t Lista Encadeada Simples-\n " ) ; printf ( "Informe a opção desejada\n " ) ; printf ( "2 - Buscar pro Matricula\n " ) ; printf ( "4 - Ordenar por nome\n " ) ; printf ( "5 - Ordenar por Matricula\n " ) ; printf ( "6 - Exibir os elementos da Lista\n " ) ; printf ( "7 - Calcular média da turma\n " ) ; return op;
}
void Inserir( Registro * inicio) {
Registro * novo;
novo= inicio;
if ( novo-> prox== NULL) { // Alocação comúm;
novo
-> prox
= ( Registro
* ) malloc ( sizeof ( Registro
) ) ; novo = novo-> prox;
printf ( "Informe o nome do aluno\n " ) ; //__fpurge(stdin);
printf ( "Informe a Matricula do Aluno\n " ) ; scanf ( "%d" , & novo
-> matricula
) ;
printf ( "Informe a nota do Aluno\n " ) ; scanf ( "%f" , & novo
-> nota
) ; novo-> prox = NULL;
} else { // novo apontando para uma posição já alocada;
novo= novo-> prox;
Inserir( novo) ;
}
}
void Exibir( Registro * inicio) {
Registro * Exibir;
Exibir= inicio-> prox;
if ( Exibir== NULL) {
printf ( "\t -------------------------------------------------\n " ) ; printf ( "\t -------------------------------------------------\n " ) ; } else {
do {
printf ( "\t Nome do Aluno: %s | Matricula :%d | Nota: %.2f \n " , Exibir
-> nome
, Exibir
-> matricula
, Exibir
-> nota
) ; printf ( "\t -------------------------------------------------\n " ) ; Exibir= Exibir-> prox;
} while ( Exibir!= NULL) ;
}
}
void BuscarMatricula( Registro * inicio) {
int Pesquisar_matricula;
Registro * Buscar;
Buscar= inicio-> prox;
if ( Buscar== NULL) {
printf ( "\t -------------------------------------------------\n " ) ; printf ( "\t -------------------------------------------------\n " ) ; } else {
printf ( "Informe a matricula do aluno\n " ) ; scanf ( "%d" , & Pesquisar_matricula
) ; do {
if ( Pesquisar_matricula== Buscar-> matricula) {
printf ( "\t Nome do Aluno: %s | Matricula :%d | Nota: %.2f \n " , Buscar
-> nome
, Buscar
-> matricula
, Buscar
-> nota
) ; break ;
} else
Buscar= Buscar-> prox;
if ( Buscar== NULL)
printf ( "Matricula não encontrada\n " ) ; } while ( Buscar!= NULL) ;
}
}
void Remover( Registro * inicio) {
int Pesquisar_matricula;
Registro * Remover;
Registro * anterior;
Remover= inicio-> prox;
anterior= inicio;
if ( Remover== NULL) {
printf ( "\t -------------------------------------------------\n " ) ; printf ( "\t -------------------------------------------------\n " ) ; } else {
printf ( "Informe a matricula do aluno\n " ) ; scanf ( "%d" , & Pesquisar_matricula
) ; do {
if ( Pesquisar_matricula== Remover-> matricula) {
printf ( "\t Aluno removido: %s | Matricula :%d | Nota: %.2f \n " , Remover
-> nome
, Remover
-> matricula
, Remover
-> nota
) ; anterior-> prox= Remover-> prox;
break ;
} else
Remover= Remover-> prox;
anterior= anterior-> prox;
if ( Remover== NULL)
printf ( "Matricula não encontrada\n " ) ; } while ( Remover!= NULL) ;
}
}
void OrdenaMatricula( Registro * inicio) {
int ss;
char nometemp[ 50 ] ;
float notatemp;
Registro * Ordenar;
Ordenar= inicio-> prox;
Registro * aux;
while ( Ordenar!= NULL) {
aux= Ordenar-> prox;
while ( aux!= NULL) {
if ( aux-> matricula< Ordenar-> matricula) {
ss= Ordenar-> matricula;
strcpy ( nometemp
, Ordenar
-> nome
) ; notatemp = Ordenar-> nota;
Ordenar-> matricula= aux-> matricula;
strcpy ( Ordenar
-> nome
, aux
-> nome
) ; Ordenar-> nota = aux-> nota;
aux-> matricula= ss;
aux-> nota = notatemp;
}
aux= aux-> prox;
}
Ordenar= Ordenar-> prox;
}
}
int main( ) {
Registro * inicio;
inicio
= ( Registro
* ) malloc ( sizeof ( Registro
) ) ; inicio-> prox= NULL;
int op;
int sair= 0 ;
int posvalida;
while ( ! sair) {
op= menu( ) ;
switch ( op) {
case 1 : {
Inserir( inicio) ;
break ;
}
case 2 : {
BuscarMatricula( inicio) ;
break ;
}
case 3 : {
Remover( inicio) ;
break ;
}
case 5 : {
OrdenaMatricula( inicio) ;
break ;
}
case 6 : {
Exibir( inicio) ;
break ;
}
case 7 : {
sair= 1 ;
break ;
}
}
}
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgQnVzY2FyTWF0cmljdWxhKCk7CnZvaWQgSW5zZXJpcigpOwp2b2lkIEV4aWJpcigpOwp2b2lkIFJlbW92ZXIoKTsKaW50IG1lbnUoKTsKdm9pZCBPcmRlbmFOb21lKCk7CgoKdHlwZWRlZiBzdHJ1Y3QgcmVnaXN0cm8gewoJY2hhciBub21lWzUwXTsKCWludCBtYXRyaWN1bGE7CglmbG9hdCBub3RhOwoJc3RydWN0IHJlZ2lzdHJvICpwcm94Owp9IFJlZ2lzdHJvOwoKCmludCBtZW51KCkgewoJaW50IG9wOwoJcHJpbnRmKCJcblx0TGlzdGEgRW5jYWRlYWRhIFNpbXBsZXMtXG4iKTsKCXByaW50ZigiSW5mb3JtZSBhIG9ww6fDo28gZGVzZWphZGFcbiIpOwoJcHJpbnRmKCIxIC0gSW5zZXJpclxuIik7CglwcmludGYoIjIgLSBCdXNjYXIgcHJvIE1hdHJpY3VsYVxuIik7CglwcmludGYoIjMgLSBSZW1vdmVyXG4iKTsKCXByaW50ZigiNCAtIE9yZGVuYXIgcG9yIG5vbWVcbiIpOwoJcHJpbnRmKCI1IC0gT3JkZW5hciBwb3IgTWF0cmljdWxhXG4iKTsKCXByaW50ZigiNiAtIEV4aWJpciBvcyBlbGVtZW50b3MgZGEgTGlzdGFcbiIpOwoJcHJpbnRmKCI3IC0gQ2FsY3VsYXIgbcOpZGlhIGRhIHR1cm1hXG4iKTsKCXNjYW5mKCIlZCIsICZvcCk7CglyZXR1cm4gb3A7Cn0KCgoKdm9pZCBJbnNlcmlyKFJlZ2lzdHJvICppbmljaW8pIHsKCVJlZ2lzdHJvICpub3ZvOwoJbm92bz1pbmljaW87CglpZihub3ZvLT5wcm94PT1OVUxMKSB7IC8vIEFsb2Nhw6fDo28gY29tw7ptOwoJCW5vdm8tPnByb3g9KFJlZ2lzdHJvICopbWFsbG9jKHNpemVvZihSZWdpc3RybykpOwoJCW5vdm8gPSBub3ZvLT5wcm94OwoJCXByaW50ZigiSW5mb3JtZSBvIG5vbWUgZG8gYWx1bm9cbiIpOwoJCXNjYW5mKCIlcyIsbm92by0+bm9tZSk7CgkJLy9fX2ZwdXJnZShzdGRpbik7CgoJCXByaW50ZigiSW5mb3JtZSBhIE1hdHJpY3VsYSBkbyBBbHVub1xuIik7CgkJc2NhbmYoIiVkIiwgJm5vdm8tPm1hdHJpY3VsYSk7CgoJCXByaW50ZigiSW5mb3JtZSBhIG5vdGEgZG8gQWx1bm9cbiIpOwoJCXNjYW5mKCIlZiIsICZub3ZvLT5ub3RhKTsKCQlub3ZvLT5wcm94ID0gTlVMTDsKCgl9IGVsc2UgeyAvLyBub3ZvIGFwb250YW5kbyBwYXJhIHVtYSBwb3Npw6fDo28gasOhIGFsb2NhZGE7CgkJbm92bz1ub3ZvLT5wcm94OwoJCUluc2VyaXIobm92byk7Cgl9Cgp9Cgp2b2lkIEV4aWJpcihSZWdpc3RybyAqaW5pY2lvKSB7CglSZWdpc3RybyAqRXhpYmlyOwoJRXhpYmlyPWluaWNpby0+cHJveDsKCWlmKEV4aWJpcj09TlVMTCkgewoJCXByaW50ZigiXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCQlwcmludGYoIlx0UmVnaXN0cm8gVmF6aW9cbiIpOwoJCXByaW50ZigiXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCX0gZWxzZSB7CgkJZG8gewoJCQlwcmludGYoIlx0IE5vbWUgZG8gQWx1bm86ICVzIHwgTWF0cmljdWxhIDolZCB8IE5vdGE6ICUuMmYgXG4iLCBFeGliaXItPm5vbWUsRXhpYmlyLT5tYXRyaWN1bGEsRXhpYmlyLT5ub3RhICk7CgkJCXByaW50ZigiXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCQkJRXhpYmlyPUV4aWJpci0+cHJveDsKCQl9IHdoaWxlKEV4aWJpciE9TlVMTCk7Cgl9Cn0KCnZvaWQgQnVzY2FyTWF0cmljdWxhKFJlZ2lzdHJvICppbmljaW8pIHsKCWludCBQZXNxdWlzYXJfbWF0cmljdWxhOwoJUmVnaXN0cm8gKkJ1c2NhcjsKCUJ1c2Nhcj1pbmljaW8tPnByb3g7CglpZihCdXNjYXI9PU5VTEwpIHsKCQlwcmludGYoIlx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CgkJcHJpbnRmKCJcdFJlZ2lzdHJvIFZhemlvXG4iKTsKCQlwcmludGYoIlx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cgl9IGVsc2UgewoJCXByaW50ZigiSW5mb3JtZSBhIG1hdHJpY3VsYSBkbyBhbHVub1xuIik7CgkJc2NhbmYoIiVkIiwgJlBlc3F1aXNhcl9tYXRyaWN1bGEpOwoJCWRvIHsKCQkJaWYoUGVzcXVpc2FyX21hdHJpY3VsYT09QnVzY2FyLT5tYXRyaWN1bGEpIHsKCQkJCXByaW50ZigiXHQgTm9tZSBkbyBBbHVubzogJXMgfCBNYXRyaWN1bGEgOiVkIHwgTm90YTogJS4yZiBcbiIsIEJ1c2Nhci0+bm9tZSxCdXNjYXItPm1hdHJpY3VsYSxCdXNjYXItPm5vdGEgKTsKCQkJCWJyZWFrOwoJCQl9IGVsc2UKCQkJCUJ1c2Nhcj1CdXNjYXItPnByb3g7CgkJCWlmKEJ1c2Nhcj09TlVMTCkKCQkJCXByaW50ZigiTWF0cmljdWxhIG7Do28gZW5jb250cmFkYVxuIik7CgkJfSB3aGlsZShCdXNjYXIhPU5VTEwpOwoJfQp9Cgp2b2lkIFJlbW92ZXIoUmVnaXN0cm8gKmluaWNpbykgewoJaW50IFBlc3F1aXNhcl9tYXRyaWN1bGE7CglSZWdpc3RybyAqUmVtb3ZlcjsKCVJlZ2lzdHJvICphbnRlcmlvcjsKCVJlbW92ZXI9aW5pY2lvLT5wcm94OwoJYW50ZXJpb3I9aW5pY2lvOwoJaWYoUmVtb3Zlcj09TlVMTCkgewoJCXByaW50ZigiXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCQlwcmludGYoIlx0UmVnaXN0cm8gVmF6aW9cbiIpOwoJCXByaW50ZigiXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKCX0gZWxzZSB7CgkJcHJpbnRmKCJJbmZvcm1lIGEgbWF0cmljdWxhIGRvIGFsdW5vXG4iKTsKCQlzY2FuZigiJWQiLCAmUGVzcXVpc2FyX21hdHJpY3VsYSk7CgkJZG8gewoJCQlpZihQZXNxdWlzYXJfbWF0cmljdWxhPT1SZW1vdmVyLT5tYXRyaWN1bGEpIHsKCQkJCXByaW50ZigiXHQgQWx1bm8gcmVtb3ZpZG86ICVzIHwgTWF0cmljdWxhIDolZCB8IE5vdGE6ICUuMmYgXG4iLCBSZW1vdmVyLT5ub21lLFJlbW92ZXItPm1hdHJpY3VsYSxSZW1vdmVyLT5ub3RhICk7CgkJCQlhbnRlcmlvci0+cHJveD1SZW1vdmVyLT5wcm94OwoJCQkJZnJlZShSZW1vdmVyKTsKCQkJCWJyZWFrOwoJCQl9IGVsc2UKCQkJCVJlbW92ZXI9UmVtb3Zlci0+cHJveDsKCQkJYW50ZXJpb3I9YW50ZXJpb3ItPnByb3g7CgkJCWlmKFJlbW92ZXI9PU5VTEwpCgkJCQlwcmludGYoIk1hdHJpY3VsYSBuw6NvIGVuY29udHJhZGFcbiIpOwoJCX0gd2hpbGUoUmVtb3ZlciE9TlVMTCk7Cgl9Cn0KCnZvaWQgT3JkZW5hTWF0cmljdWxhKFJlZ2lzdHJvICppbmljaW8pIHsKCWludCBzczsKCWNoYXIgbm9tZXRlbXBbNTBdOwoJZmxvYXQgbm90YXRlbXA7CgoJUmVnaXN0cm8gKk9yZGVuYXI7CglPcmRlbmFyPWluaWNpby0+cHJveDsKCVJlZ2lzdHJvICphdXg7CgoKCgl3aGlsZShPcmRlbmFyIT1OVUxMKSB7CgkJYXV4PU9yZGVuYXItPnByb3g7CgkJd2hpbGUoYXV4IT1OVUxMKSB7CgkJCWlmKGF1eC0+bWF0cmljdWxhPE9yZGVuYXItPm1hdHJpY3VsYSkgewoJCQkJc3M9T3JkZW5hci0+bWF0cmljdWxhOwoJCQkJc3RyY3B5KG5vbWV0ZW1wLE9yZGVuYXItPm5vbWUpOwoJCQkJbm90YXRlbXAgPSBPcmRlbmFyLT5ub3RhOwoKCQkJCU9yZGVuYXItPm1hdHJpY3VsYT1hdXgtPm1hdHJpY3VsYTsKCQkJCXN0cmNweShPcmRlbmFyLT5ub21lLCBhdXgtPm5vbWUpOwoJCQkJT3JkZW5hci0+bm90YSA9IGF1eC0+bm90YTsKCiAgICAgICAgICAgIAlhdXgtPm1hdHJpY3VsYT1zczsKICAgICAgICAgICAgCXN0cmNweShhdXgtPm5vbWUsIG5vbWV0ZW1wKTsKICAgICAgICAgICAgCWF1eC0+bm90YSA9IG5vdGF0ZW1wOwoJCQl9CiAgICAgICAgICAgIGF1eD1hdXgtPnByb3g7CgkJfQoJCU9yZGVuYXI9T3JkZW5hci0+cHJveDsKCX0KCn0KCgoKCgppbnQgbWFpbigpIHsKCVJlZ2lzdHJvICppbmljaW87CglpbmljaW89KFJlZ2lzdHJvICopbWFsbG9jKHNpemVvZihSZWdpc3RybykpOwoJaW5pY2lvLT5wcm94PU5VTEw7CgoKCWludCBvcDsKCWludCBzYWlyPTA7CglpbnQgcG9zdmFsaWRhOwoJd2hpbGUoIXNhaXIpIHsKCQlvcD1tZW51KCk7CgkJc3dpdGNoKG9wKSB7CgkJY2FzZSAxOiB7CgkJCUluc2VyaXIoaW5pY2lvKTsKCQkJYnJlYWs7CgoJCX0KCQljYXNlIDI6IHsKCQkJQnVzY2FyTWF0cmljdWxhKGluaWNpbyk7CgkJCWJyZWFrOwoJCX0KCQljYXNlIDM6IHsKCQkJUmVtb3ZlcihpbmljaW8pOwoJCQlicmVhazsKCQl9CgkJY2FzZSA1OiB7CgkJCU9yZGVuYU1hdHJpY3VsYShpbmljaW8pOwoJCQlicmVhazsKCQl9CgkJY2FzZSA2OiB7CgkJCUV4aWJpcihpbmljaW8pOwoJCQlicmVhazsKCQl9CgkJY2FzZSA3OiB7CgkJCXNhaXI9MTsKCQkJYnJlYWs7CgkJfQoJCX0KCgl9CiAgICByZXR1cm4gMDsKfQo=