Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct nodoArbolBin{
- char palabra[20];
- char trad[20];
- struct nodoArbolBin *izq;
- struct nodoArbolBin *der;
- }nodoABB;
- typedef struct arbolBinario{
- nodoABB *raiz;
- int nElem;
- }ABB;
- void initTree(ABB *T){
- T->raiz = NULL;
- T->nElem = 0;
- }
- void clearHelp(nodoABB *n){
- if(n==NULL){
- return;}
- clearHelp(n->izq);
- clearHelp(n->der);
- free((void*)n);
- }
- void clear(ABB *T){
- clearHelp(T->raiz);
- T->raiz = NULL;
- T->nElem = 0;
- }
- char *findHelp(nodoABB *n, char *p){
- if (n==NULL){
- return "NOT A WORD";
- }
- if (strcmp(n->palabra,p)==0){
- return n->trad;
- }
- if (strcmp(n->palabra,p)<0){
- return findHelp(n->izq,p);
- }
- else{
- return findHelp(n->der,p);
- }
- }
- char *find(ABB *T, char *p){
- return findHelp(T->raiz,p);
- }
- void insert(ABB *T, char *p1, char *p2){
- nodoABB *temp, *nuevo;
- int flag = 0;
- temp = T->raiz;
- while(flag == 0){
- if(temp == NULL){
- strcpy(nuevo->palabra, p1);
- strcpy(nuevo->trad, p2);
- nuevo->izq = NULL;
- nuevo->der = NULL;
- T->raiz = nuevo;
- flag = 1;
- }
- if(strcmp(p1,temp->palabra)<0 && temp->izq != NULL){
- temp = temp->izq;
- }
- if(strcmp(p1,temp->palabra)<0 && temp->izq == NULL){
- strcpy(nuevo->palabra, p1);
- strcpy(nuevo->trad, p2);
- nuevo->izq = NULL;
- nuevo->der = NULL;
- nuevo = temp->izq;
- flag = 1;
- }
- if(strcmp(p1,temp->palabra)>0 && temp->der != NULL){
- temp = temp->der;
- }
- if(strcmp(p1,temp->palabra)>0 && temp->der == NULL){
- strcpy(nuevo->palabra, p1);
- strcpy(nuevo->trad, p2);
- nuevo->izq = NULL;
- nuevo->der = NULL;
- nuevo = temp->der;
- flag = 1;
- }
- }
- }
- int main(int argc,char *argv[]){
- FILE *fp1,*fp2;
- char pal[20];
- char tras[20];
- char out[10];
- char n[10];
- char trad[10];
- char retorno[20];
- char ou[6] = "output";
- int i,ni;
- ABB *arbol;
- initTree(arbol);
- fp1 = fopen(argv[1],"r");
- while(!feof(fp1)){
- fscanf(fp1,"%s",pal);
- fscanf(fp1,"%s",tras);
- insert(arbol,pal,tras);
- }
- fclose(fp1);
- ni = argc;
- for(i=2;i<ni;i++){
- fp1 =fopen(argv[i],"r");
- strcpy(out,ou);
- sprintf(n,"%d",i-2);
- strcat(out,n);
- fp2 =fopen(out,"w");
- while(!feof(fp1)){
- fscanf(fp1,"%s",trad);
- strcpy(retorno,find(arbol,trad));
- fprintf(fp2,"%sn",retorno);
- }
- fclose(fp1);
- fclose(fp2);
- }
- clear(arbol);
- return 0;
- }
Add Comment
Please, Sign In to add comment