Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.28 KB | None | 0 0
  1.  
  2. /*typedef struct aluno *List;
  3. typedef struct aluno {
  4.  
  5. char *nome_aluno;
  6. int nmr_aluno;
  7. char *curso;
  8. int ano_matricula; //1,2,3...
  9. char *regime; //normal, trabalhador-estudante,atleta,dirigente associativo, Erasmus
  10. List next;
  11.  
  12. }List_aluno;*/
  13.  
  14. List cria_lista_alunos(void)
  15. {
  16. List aux;
  17. aux = (List) malloc(sizeof(List_aluno));
  18. if (aux != NULL){
  19. aux->nome_aluno = NULL;
  20. aux->nmr_aluno = 0;
  21. aux->curso = NULL;
  22. aux->ano_matricula = 0;
  23. aux->next = NULL;
  24. }
  25. return aux;
  26. }
  27.  
  28.  
  29. int lista_vazia(List lista)
  30. {
  31. return (lista->next==NULL?1:0);
  32. }
  33.  
  34. void procura_nome(List lista, char *chave, List *ant, List *actual)
  35. {
  36. *ant = lista;
  37. *actual = lista->next;
  38.  
  39. while((*actual)!=NULL && strcmp((*actual)->nome_aluno,chave)<0){ /* O primeiro caracter que não corresponde tem um valor menor em ptr1 do que em ptr2*/
  40. *ant = *actual;
  41. *actual = (*actual)->next;
  42. }
  43.  
  44. if ((*actual)!=NULL && strcmp((*actual)->nome_aluno,chave)!=0)
  45. *actual = NULL;
  46. }
  47.  
  48. void insere_aluno_lista(List lista, char *name, int n, char *c, int ano_m , char *regim) /*ORDENADO POR NOME*/
  49. {
  50. List no;
  51. List ant, actual;
  52.  
  53. no = (List) malloc(sizeof (List_aluno));
  54.  
  55. if(no!=NULL){
  56. procura_nome(lista, name, &ant, &actual);
  57.  
  58. /*if(actual==NULL){*/
  59. no->nome_aluno=(char*) malloc((strlen(name))*sizeof(char));
  60.  
  61. no->curso=(char*) malloc((strlen(c))*sizeof(char));
  62.  
  63. no->regime=(char*) malloc((strlen(regim))*sizeof(char));
  64.  
  65. if(no->nome_aluno!=NULL)
  66. {
  67. strcpy(no->nome_aluno,name);
  68. no->nmr_aluno = n;
  69. strcpy(no->curso,c);
  70. no->ano_matricula = ano_m;
  71. strcpy(no->regime,regim);
  72.  
  73. }
  74. no->next=ant->next;
  75. ant->next=no;
  76. /*}*/
  77. }
  78. }
  79.  
  80. void imprime_lista_alunos(List lista)
  81. {
  82. List l = lista->next; /*salta o header*/
  83. while(l){
  84. printf("%s\n%d\n%s\n%d\n%s\n\n" , l->nome_aluno, l->nmr_aluno, l->curso, l->ano_matricula, l->regime);
  85. l=l->next;
  86. }
  87. }
  88.  
  89.  
  90. /*
  91. void add_lista(List l1, List l2)
  92. {
  93. List aux=l2->next;
  94. while(aux){
  95. insere_nome_lista(l1, aux->nome_aluno,aux->nmr_aluno,aux->curso,aux->ano_matricula,aux->regime);
  96. aux=aux->next;
  97. }
  98. }*/
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. int nmr_aluno()
  106. {
  107. char nmr[MAX];
  108. int n;
  109.  
  110. printf("Insira o numero do aluno(10 digitos): ");
  111. gets(nmr);
  112.  
  113.  
  114. while( (strlen(nmr) != 10) || (verifica_digitos(nmr) == 0) )
  115. {
  116.  
  117. printf("Numero invalido.\n");
  118. printf("Volte a inserir o numero do aluno(10 digitos): ");
  119. gets(nmr);
  120.  
  121. }
  122.  
  123. n = atoi(nmr); /*tranforma a string num inteiro--> atoi()*/
  124.  
  125. return n;
  126.  
  127. }
  128.  
  129. int year_matricula()
  130. {
  131. char nmr[MAX];
  132. int n;
  133.  
  134. printf("Insira o numero da sua matricula(2 digitos maximo): ");
  135. gets(nmr);
  136.  
  137.  
  138. while( (strlen(nmr) <1) || (strlen(nmr) >2) || (verifica_digitos(nmr) == 0) )
  139. {
  140.  
  141. printf("Numero invalido.\n");
  142. printf("Volte a inserir o numero da sua matricula(2 digitos maximo): ");
  143. gets(nmr);
  144.  
  145. }
  146.  
  147. n = atoi(nmr); /*tranforma a string num inteiro--> atoi()*/
  148.  
  149. return n;
  150.  
  151. }
  152.  
  153.  
  154. List insere_dados_aluno(void)
  155. {
  156. List student;
  157. int nmr,ano_m;
  158.  
  159. char nome[MAX],curs[MAX],reg[MAX];
  160.  
  161. student = cria_lista_alunos();
  162.  
  163. /*------------------NOME ALUNO---------------*/
  164.  
  165.  
  166.  
  167. printf("Insira o nome do aluno: ");
  168.  
  169. gets(nome); /*a string é um vetor*/
  170.  
  171. strupr(nome);/*converte tudo para maiuscula*/
  172.  
  173.  
  174. while( (verifica_caracteres(nome) == 0) || (strlen(nome)>MAX) )
  175. {
  176.  
  177. printf("Contem caracteres invalidos ou ultrapassou o numero maximo de caracteres(50).\n");
  178. printf("Volte a inserir o nome do aluno: ");
  179. gets(nome);
  180.  
  181. }
  182.  
  183. /*printf("%s\n",nome);*/
  184.  
  185. /*------FIM NOME ALUNO ------*/
  186.  
  187. nmr = nmr_aluno(); /*NUMERO ALUNO*/
  188.  
  189. /*-----------CURSO-------------*/
  190.  
  191. printf("Insira o curso do aluno: ");
  192.  
  193. gets(curs); /*a string é um vetor*/
  194.  
  195. /*strupr(nome); //converte tudo para maiuscula*/
  196.  
  197.  
  198. while( (verifica_caracteres(curs) == 0) || (strlen(curs)>MAX) )
  199. {
  200.  
  201. printf("Contem caracteres invalidos ou ultrapassou o numero maximo de caracteres(50).\n");
  202. printf("Volte a inserir o curso do aluno: ");
  203. gets(curs);
  204.  
  205. }
  206.  
  207. /*----------FIM CURSO--------*/
  208.  
  209. ano_m = year_matricula(); /*ANO DA MATRICULA NO CURSO*/
  210.  
  211. /*---------REGIME-------*/
  212.  
  213.  
  214. printf("De entre os diversos regimes:\n\nNormal\nTrabalhador estudante\natleta\nDirigente associativo\nErasmo\n\nInsira o regime do aluno: ");
  215.  
  216. gets(reg); /*a string é um vetor*/
  217.  
  218. /*strupr(nome); //converte tudo para maiuscula*/
  219.  
  220.  
  221. while( (verifica_caracteres(reg) == 0) || (strlen(reg)>MAX) )
  222. {
  223.  
  224. printf("Contem caracteres invalidos ou ultrapassou o numero maximo de caracteres(50).\n");
  225. printf("Volte a inserir o regime do aluno: ");
  226. gets(reg);
  227.  
  228. }
  229.  
  230.  
  231. insere_aluno_lista(student , nome, nmr, curs , ano_m, reg);
  232.  
  233. /*printf("Lista de alunos ordenada alfabeticamente:\n");
  234. imprime_lista(student);*/
  235. return student;
  236.  
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement