Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "hanking.h"
  5.  
  6. struct arv{
  7. ArvNo* raiz;
  8. };
  9.  
  10. struct arvno{
  11. char nome[81];
  12. int pont;
  13. struct arvno *esq;
  14. struct arvno *dir;
  15. };
  16.  
  17. ArvNo* arv_criano(char* nome, int pont, ArvNo* esq, ArvNo* dir){
  18. ArvNo* p = (ArvNo*)malloc(sizeof(ArvNo));
  19. p->pont = pont;
  20. strcpy(p->nome,nome);
  21. p->esq = esq;
  22. p->dir = dir;
  23. return p;
  24. }
  25.  
  26. Arv *arv_cria(ArvNo* r){
  27. Arv* a = (Arv*)malloc(sizeof(Arv));
  28. a->raiz = r;
  29. return a;
  30. }
  31.  
  32. static ArvNo* insere(ArvNo* r, char* nome, int pont){
  33. if(r==NULL){
  34. r = arv_criano(nome,pont,NULL,NULL);
  35. /*r->pont = pont;
  36. strcpy(r->nome,nome);
  37. r->esq = r->dir = NULL;*/
  38. }
  39. else if(pont < r->pont){
  40. r->esq = insere(r->esq,nome,pont);
  41. }
  42. else{
  43. r->dir = insere(r->dir,nome,pont);
  44. }
  45. return r;
  46. }
  47.  
  48. void abb_insere(Arv* a, char* nome, int pont){
  49. a->raiz = insere(a->raiz,nome,pont);
  50. }
  51.  
  52. static void imprime(ArvNo* r){
  53. if(r!=NULL){
  54. imprime(r->dir);
  55. printf(" %s: %d\n",r->nome,r->pont);
  56. imprime(r->esq);
  57. }
  58. }
  59.  
  60. void arv_imprime(Arv* a){
  61. imprime(a->raiz);
  62. }
  63.  
  64. Arv* hanking_carrega(void){
  65. FILE* arqv = fopen("lista_hanking.txt", "a+t");
  66. ArvNo* p = (ArvNo*)malloc(sizeof(ArvNo));
  67. char nome[121];
  68. int pont;
  69.  
  70. if(arqv == NULL){
  71. printf("\nFALHA AO ABRIR ARQUIVO\n");
  72. exit(1);
  73. }
  74.  
  75. Arv* h = arv_cria(p);
  76.  
  77. while(fscanf(arqv,"%d\n",nome) != EOF){
  78. fscanf(arqv, "%*s: %d\n",nome,pont);
  79. fscanf(arqv,"%d\n\n",pont);
  80.  
  81. }
  82. fclose(arqv);
  83.  
  84. return h;
  85. }
  86.  
  87. static void salva(FILE* fp, ArvNo* no){
  88.  
  89. if(no != NULL){
  90. fprintf(fp,"Nome: %s\n",no->nome);
  91. fprintf(fp,"pontuação: %s\n\n",no->pont);
  92. fclose(fp);
  93. }
  94. salva(no->esq);
  95. salva(no->dir);
  96. }
  97.  
  98. void arv_salva(Arv* arv){
  99. salva(arv->raiz);
  100. }
  101.  
  102. int main(void){
  103.  
  104. //FILE* fp = fopen("lista_hanking","a+t");
  105. Arv* arvore = arv_cria(NULL);
  106. //arvore = hanking_carrega();
  107.  
  108. abb_insere(arvore,"Aluno1",250);
  109. abb_insere(arvore,"Aluno2",250);
  110. abb_insere(arvore,"Aluno3",80);
  111. abb_insere(arvore,"Aluno4",150);
  112. abb_insere(arvore,"Aluno5",130);
  113. abb_insere(arvore,"Aluno6",210);
  114.  
  115. arv_imprime(arvore);
  116.  
  117. arv_salva(arvore);
  118. printf("\n");
  119.  
  120. return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement