fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void BuscarMatricula();
  5. void Inserir();
  6. void Exibir();
  7. void Remover();
  8. int menu();
  9. void OrdenaNome();
  10.  
  11.  
  12. typedef struct registro {
  13. char nome[50];
  14. int matricula;
  15. float nota;
  16. struct registro *prox;
  17. } Registro;
  18.  
  19.  
  20. int menu() {
  21. int op;
  22. printf("\n\tLista Encadeada Simples-\n");
  23. printf("Informe a opção desejada\n");
  24. printf("1 - Inserir\n");
  25. printf("2 - Buscar pro Matricula\n");
  26. printf("3 - Remover\n");
  27. printf("4 - Ordenar por nome\n");
  28. printf("5 - Ordenar por Matricula\n");
  29. printf("6 - Exibir os elementos da Lista\n");
  30. printf("7 - Calcular média da turma\n");
  31. scanf("%d", &op);
  32. return op;
  33. }
  34.  
  35.  
  36.  
  37. void Inserir(Registro *inicio) {
  38. Registro *novo;
  39. novo=inicio;
  40. if(novo->prox==NULL) { // Alocação comúm;
  41. novo->prox=(Registro *)malloc(sizeof(Registro));
  42. novo = novo->prox;
  43. printf("Informe o nome do aluno\n");
  44. scanf("%s",novo->nome);
  45. //__fpurge(stdin);
  46.  
  47. printf("Informe a Matricula do Aluno\n");
  48. scanf("%d", &novo->matricula);
  49.  
  50. printf("Informe a nota do Aluno\n");
  51. scanf("%f", &novo->nota);
  52. novo->prox = NULL;
  53.  
  54. } else { // novo apontando para uma posição já alocada;
  55. novo=novo->prox;
  56. Inserir(novo);
  57. }
  58.  
  59. }
  60.  
  61. void Exibir(Registro *inicio) {
  62. Registro *Exibir;
  63. Exibir=inicio->prox;
  64. if(Exibir==NULL) {
  65. printf("\t-------------------------------------------------\n");
  66. printf("\tRegistro Vazio\n");
  67. printf("\t-------------------------------------------------\n");
  68. } else {
  69. do {
  70. printf("\t Nome do Aluno: %s | Matricula :%d | Nota: %.2f \n", Exibir->nome,Exibir->matricula,Exibir->nota );
  71. printf("\t-------------------------------------------------\n");
  72. Exibir=Exibir->prox;
  73. } while(Exibir!=NULL);
  74. }
  75. }
  76.  
  77. void BuscarMatricula(Registro *inicio) {
  78. int Pesquisar_matricula;
  79. Registro *Buscar;
  80. Buscar=inicio->prox;
  81. if(Buscar==NULL) {
  82. printf("\t-------------------------------------------------\n");
  83. printf("\tRegistro Vazio\n");
  84. printf("\t-------------------------------------------------\n");
  85. } else {
  86. printf("Informe a matricula do aluno\n");
  87. scanf("%d", &Pesquisar_matricula);
  88. do {
  89. if(Pesquisar_matricula==Buscar->matricula) {
  90. printf("\t Nome do Aluno: %s | Matricula :%d | Nota: %.2f \n", Buscar->nome,Buscar->matricula,Buscar->nota );
  91. break;
  92. } else
  93. Buscar=Buscar->prox;
  94. if(Buscar==NULL)
  95. printf("Matricula não encontrada\n");
  96. } while(Buscar!=NULL);
  97. }
  98. }
  99.  
  100. void Remover(Registro *inicio) {
  101. int Pesquisar_matricula;
  102. Registro *Remover;
  103. Registro *anterior;
  104. Remover=inicio->prox;
  105. anterior=inicio;
  106. if(Remover==NULL) {
  107. printf("\t-------------------------------------------------\n");
  108. printf("\tRegistro Vazio\n");
  109. printf("\t-------------------------------------------------\n");
  110. } else {
  111. printf("Informe a matricula do aluno\n");
  112. scanf("%d", &Pesquisar_matricula);
  113. do {
  114. if(Pesquisar_matricula==Remover->matricula) {
  115. printf("\t Aluno removido: %s | Matricula :%d | Nota: %.2f \n", Remover->nome,Remover->matricula,Remover->nota );
  116. anterior->prox=Remover->prox;
  117. free(Remover);
  118. break;
  119. } else
  120. Remover=Remover->prox;
  121. anterior=anterior->prox;
  122. if(Remover==NULL)
  123. printf("Matricula não encontrada\n");
  124. } while(Remover!=NULL);
  125. }
  126. }
  127.  
  128. void OrdenaMatricula(Registro *inicio) {
  129. int ss;
  130. char nometemp[50];
  131. float notatemp;
  132.  
  133. Registro *Ordenar;
  134. Ordenar=inicio->prox;
  135. Registro *aux;
  136.  
  137.  
  138.  
  139. while(Ordenar!=NULL) {
  140. aux=Ordenar->prox;
  141. while(aux!=NULL) {
  142. if(aux->matricula<Ordenar->matricula) {
  143. ss=Ordenar->matricula;
  144. strcpy(nometemp,Ordenar->nome);
  145. notatemp = Ordenar->nota;
  146.  
  147. Ordenar->matricula=aux->matricula;
  148. strcpy(Ordenar->nome, aux->nome);
  149. Ordenar->nota = aux->nota;
  150.  
  151. aux->matricula=ss;
  152. strcpy(aux->nome, nometemp);
  153. aux->nota = notatemp;
  154. }
  155. aux=aux->prox;
  156. }
  157. Ordenar=Ordenar->prox;
  158. }
  159.  
  160. }
  161.  
  162.  
  163.  
  164.  
  165.  
  166. int main() {
  167. Registro *inicio;
  168. inicio=(Registro *)malloc(sizeof(Registro));
  169. inicio->prox=NULL;
  170.  
  171.  
  172. int op;
  173. int sair=0;
  174. int posvalida;
  175. while(!sair) {
  176. op=menu();
  177. switch(op) {
  178. case 1: {
  179. Inserir(inicio);
  180. break;
  181.  
  182. }
  183. case 2: {
  184. BuscarMatricula(inicio);
  185. break;
  186. }
  187. case 3: {
  188. Remover(inicio);
  189. break;
  190. }
  191. case 5: {
  192. OrdenaMatricula(inicio);
  193. break;
  194. }
  195. case 6: {
  196. Exibir(inicio);
  197. break;
  198. }
  199. case 7: {
  200. sair=1;
  201. break;
  202. }
  203. }
  204.  
  205. }
  206. return 0;
  207. }
  208.  
Success #stdin #stdout 0s 9432KB
stdin
1
joao
123
10
1
marta
55
19
6
5
6
7
stdout
	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma
Informe o nome do aluno
Informe a Matricula do Aluno
Informe a nota do Aluno

	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma
Informe o nome do aluno
Informe a Matricula do Aluno
Informe a nota do Aluno

	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma
	 Nome do Aluno: joao | Matricula :123 | Nota: 10.00 
	-------------------------------------------------
	 Nome do Aluno: marta | Matricula :55 | Nota: 19.00 
	-------------------------------------------------

	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma

	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma
	 Nome do Aluno: marta | Matricula :55 | Nota: 19.00 
	-------------------------------------------------
	 Nome do Aluno: joao | Matricula :123 | Nota: 10.00 
	-------------------------------------------------

	Lista Encadeada Simples-
Informe a opção desejada
1 - Inserir
2 - Buscar pro Matricula
3 - Remover
4 - Ordenar por nome
5 - Ordenar por Matricula
6 - Exibir os elementos da Lista
7 - Calcular média da turma