Guest User

Untitled

a guest
Dec 11th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. typedef struct nodoArbolBin{
  6. char palabra[20];
  7. char trad[20];
  8. struct nodoArbolBin *izq;
  9. struct nodoArbolBin *der;
  10. }nodoABB;
  11.  
  12. typedef struct arbolBinario{
  13. nodoABB *raiz;
  14. int nElem;
  15. }ABB;
  16.  
  17. void initTree(ABB *T){
  18. T->raiz = NULL;
  19. T->nElem = 0;
  20. }
  21.  
  22. void clearHelp(nodoABB *n){
  23. if(n==NULL){
  24. return;}
  25. clearHelp(n->izq);
  26. clearHelp(n->der);
  27. free((void*)n);
  28.  
  29. }
  30. void clear(ABB *T){
  31. clearHelp(T->raiz);
  32. T->raiz = NULL;
  33. T->nElem = 0;
  34.  
  35. }
  36.  
  37. char *findHelp(nodoABB *n, char *p){
  38. if (n==NULL){
  39. return "NOT A WORD";
  40. }
  41. if (strcmp(n->palabra,p)==0){
  42. return n->trad;
  43. }
  44. if (strcmp(n->palabra,p)<0){
  45. return findHelp(n->izq,p);
  46. }
  47. else{
  48. return findHelp(n->der,p);
  49. }
  50. }
  51.  
  52. char *find(ABB *T, char *p){
  53. return findHelp(T->raiz,p);
  54.  
  55. }
  56.  
  57.  
  58. void insert(ABB *T, char *p1, char *p2){
  59. nodoABB *temp, *nuevo;
  60. int flag = 0;
  61.  
  62. temp = T->raiz;
  63. while(flag == 0){
  64. if(temp == NULL){
  65. strcpy(nuevo->palabra, p1);
  66. strcpy(nuevo->trad, p2);
  67. nuevo->izq = NULL;
  68. nuevo->der = NULL;
  69. T->raiz = nuevo;
  70. flag = 1;
  71. }
  72. if(strcmp(p1,temp->palabra)<0 && temp->izq != NULL){
  73. temp = temp->izq;
  74. }
  75. if(strcmp(p1,temp->palabra)<0 && temp->izq == NULL){
  76. strcpy(nuevo->palabra, p1);
  77. strcpy(nuevo->trad, p2);
  78. nuevo->izq = NULL;
  79. nuevo->der = NULL;
  80. nuevo = temp->izq;
  81. flag = 1;
  82. }
  83. if(strcmp(p1,temp->palabra)>0 && temp->der != NULL){
  84. temp = temp->der;
  85. }
  86. if(strcmp(p1,temp->palabra)>0 && temp->der == NULL){
  87. strcpy(nuevo->palabra, p1);
  88. strcpy(nuevo->trad, p2);
  89. nuevo->izq = NULL;
  90. nuevo->der = NULL;
  91. nuevo = temp->der;
  92. flag = 1;
  93. }
  94.  
  95. }
  96. }
  97.  
  98. int main(int argc,char *argv[]){
  99. FILE *fp1,*fp2;
  100. char pal[20];
  101. char tras[20];
  102. char out[10];
  103. char n[10];
  104. char trad[10];
  105. char retorno[20];
  106. char ou[6] = "output";
  107. int i,ni;
  108. ABB *arbol;
  109.  
  110. initTree(arbol);
  111. fp1 = fopen(argv[1],"r");
  112. while(!feof(fp1)){
  113. fscanf(fp1,"%s",pal);
  114. fscanf(fp1,"%s",tras);
  115. insert(arbol,pal,tras);
  116. }
  117. fclose(fp1);
  118. ni = argc;
  119. for(i=2;i<ni;i++){
  120. fp1 =fopen(argv[i],"r");
  121. strcpy(out,ou);
  122. sprintf(n,"%d",i-2);
  123. strcat(out,n);
  124. fp2 =fopen(out,"w");
  125. while(!feof(fp1)){
  126. fscanf(fp1,"%s",trad);
  127. strcpy(retorno,find(arbol,trad));
  128. fprintf(fp2,"%sn",retorno);
  129. }
  130. fclose(fp1);
  131. fclose(fp2);
  132. }
  133. clear(arbol);
  134. return 0;
  135. }
Add Comment
Please, Sign In to add comment