Advertisement
Pedromaia26

LISTAS_Casa

Mar 24th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. typedef struct lista{
  7. int num;
  8. char nome[30];
  9. char turma[30];
  10. float media;
  11. struct lista* prox;
  12. }lista;
  13.  
  14. lista *inicio, *temp, *aux, *ant;
  15.  
  16. void inserir(){
  17. int x;
  18. do{
  19. temp=(lista*)malloc(sizeof(lista));
  20. printf("Numero: ");
  21. scanf("%d",&temp->num);
  22. printf("Nome: ");
  23. scanf("%s",temp->nome);
  24. printf("Turma: ");
  25. scanf("%s",temp->turma);
  26. printf("Media: ");
  27. scanf("%f",&temp->media);
  28. if (inicio==NULL){
  29. inicio=temp;
  30. inicio->prox=NULL;
  31. }
  32. else{
  33. if (temp->num<inicio->num){
  34. temp->prox=inicio;
  35. inicio=temp;
  36. }
  37. else{
  38. aux=inicio;
  39. ant=NULL;
  40. while (aux->prox!=NULL && temp->num > aux->num){
  41. ant=aux;
  42. aux=aux->prox;
  43. }
  44. if (temp->num < aux->num){
  45. ant->prox=temp;
  46. temp->prox=aux;
  47. }
  48. else{
  49. aux->prox=temp;
  50. temp->prox=NULL;
  51. }
  52. }
  53. }
  54. printf("Pretende continuar? (0-N 1-S)\n");
  55. scanf("%d",&x);
  56. }while(x==1);
  57.  
  58. }
  59.  
  60. void consulta(){
  61. aux=inicio;
  62. while(aux!=NULL){
  63. printf("Numero: %d\nNome: %s\nTurma: %s\nMedia: %.2f\n----------\n",aux->num,aux->nome,aux->turma,aux->media);
  64. aux=aux->prox;
  65. }
  66. }
  67.  
  68. void pesquisanum(){
  69. int numero;
  70. printf("Numero a pesquisar: ");
  71. scanf("%d",&numero);
  72. if (inicio!=NULL){
  73. aux=inicio;
  74. while(aux->prox!=NULL && aux->num!=numero){
  75. aux=aux->prox;
  76. }
  77. if (aux->num==numero){
  78. printf("Numero: %d\nNome: %s\nTurma: %s\nMedia: %.2f\n----------\n",aux->num,aux->nome,aux->turma,aux->media);
  79. }
  80. else{
  81. printf("---------- Numero nao existe ----------\n");
  82. }
  83. }
  84. else{
  85. printf("---------- Valores nao inseridos ----------\n");
  86. }
  87. }
  88.  
  89. void pesquisaturma(){
  90. char turmap[30];
  91. int i=0;
  92. printf("Turma a pesquisar: ");
  93. scanf("%s",turmap);
  94. if (inicio!=NULL){
  95. aux=inicio;
  96. while(aux!=NULL){
  97. if (strcmp(aux->turma,turmap)==0){
  98. printf("Numero: %d\nNome: %s\nTurma: %s\nMedia: %.2f\n----------\n",aux->num,aux->nome,aux->turma,aux->media);
  99. i++;
  100. }
  101. aux=aux->prox;
  102. }
  103. if (i==0){
  104. printf("---------- Turma nao encontrada ----------\n");
  105. }
  106. }
  107. else{
  108. printf("---------- Valores nao inseridos ----------\n");
  109. }
  110. }
  111.  
  112. void eliminaraluno(){
  113. int numero;
  114. printf("Numero que pretende eliminar: ");
  115. scanf("%d",&numero);
  116. if (inicio!=NULL){
  117. aux=inicio;
  118. ant=NULL;
  119. while (aux->prox!=NULL && aux->num!=numero){
  120. ant=aux;
  121. aux=aux->prox;
  122. }
  123. if (aux->num==numero){
  124. if (aux==inicio){
  125. inicio=inicio->prox;
  126. free(aux);
  127. }
  128. else{
  129. ant->prox=aux->prox;
  130. free(aux);
  131. }
  132. }
  133. else{
  134. printf("Numero nao encontrado\n");
  135. }
  136. }
  137. else{
  138. printf("---------- Valores nao inseridos ----------\n");
  139. }
  140. }
  141.  
  142. void eliminarturma(){
  143. char turmap[30];
  144. int i=0;
  145. printf("Turma que pretende eliminar: ");
  146. scanf("%s",turmap);
  147. if (inicio!=NULL){
  148. aux=inicio;
  149. ant=NULL;
  150. while(aux!=NULL){
  151. if (strcmp(aux->turma,turmap)==0){
  152. i++;
  153. if (aux==inicio){
  154. inicio=inicio->prox;
  155. free(aux);
  156. aux=inicio;
  157. }
  158. else{
  159. ant->prox=aux->prox;
  160. free(aux);
  161. aux=ant->prox;
  162. }
  163. }
  164. else{
  165. ant=aux;
  166. aux=aux->prox;
  167. }
  168.  
  169. }
  170. if (i==0){
  171. printf("---------- Turma nao encontrada ----------\n");
  172. }
  173. }
  174. else{
  175. printf("---------- Valores nao inseridos ----------\n");
  176. }
  177. }
  178.  
  179. void eliminarlista(){
  180. while (inicio!=NULL){
  181. aux=inicio;
  182. inicio=inicio->prox;
  183. free(aux);
  184. }
  185. }
  186.  
  187. void exportar(){
  188. printf("---------- Funcao nao disponivel ----------\n");
  189. }
  190.  
  191. int main(){
  192. int op;
  193. do{
  194. printf("1 - Inserir ordenadamente por numero\n");
  195. printf("2 - Consulta global\n");
  196. printf("3 - Pesquisa por numero\n");
  197. printf("4 - Pesquisa por turma\n");
  198. printf("5 - Eliminar um dado aluno\n");
  199. printf("6 - Eliminar uma dada turma\n");
  200. printf("7 - Eliminar lista\n");
  201. printf("8 - Exportar para ficheiro\n");
  202. printf("9 - Sair\n");
  203. printf("----------- Escolha ----------\n");
  204. scanf("%d",&op);
  205. switch(op){
  206. case 1: inserir();
  207. break;
  208. case 2: consulta();
  209. break;
  210. case 3: pesquisanum();
  211. break;
  212. case 4: pesquisaturma();
  213. break;
  214. case 5: eliminaraluno();
  215. break;
  216. case 6: eliminarturma();
  217. break;
  218. case 7: eliminarlista();
  219. break;
  220. case 8: exportar();
  221. break;
  222. }
  223. }while(op!=9);
  224. printf("---------- Programa encerrado ----------");
  225. return 0;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement