Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct lista
- {
- int id_cuenta;
- int saldo;
- struct lista *sig;
- }t_lista;
- typedef t_lista *list;
- typedef struct nodo
- {
- int rut;
- list id_cuentas;
- struct nodo *izq;
- struct nodo *der;
- }Nodo;
- typedef Nodo *ArbolBinar;
- void crearArbol(ArbolBinar*);
- ArbolBinar insertarNodo(Nodo*,ArbolBinar*);
- int esVacio(ArbolBinar);
- ArbolBinar buscar_Nodo(ArbolBinar,int);
- int AgregarCuenta(ArbolBinar*,int,int,int);
- int ModificarSaldo(ArbolBinar*,int,int,int);
- void EliminarCuenta(ArbolBinar*,int,int);
- int SaldoCliente(ArbolBinar,int);
- void MostrarClientes(ArbolBinar);
- int SaldoBanco(ArbolBinar);
- void insertarCliente(ArbolBinar*,int);
- void arboles(ArbolBinar,FILE*);
- int main()
- {
- int cli,cuentas,numero,i,j,id,num_cuentas,contador=0;
- FILE *f,*f2,*f3;
- list aux;
- ArbolBinar Arbol;
- crearArbol(&Arbol);
- f=fopen("Clientes.txt","r");
- fscanf(f,"%d",&cli);
- printf("%d\n",cli);
- for(i=0;i<cli;i++)
- {
- fscanf(f,"%d",&numero);
- printf("%d\n",numero);
- fscanf(f,"%d",&num_cuentas);
- printf("%d\n",num_cuentas);
- for(j=0;j<num_cuentas;j++)
- {
- fscanf(f,"%d",&id);
- printf("%d\n",id);
- fscanf(f,"%d",&cuentas);
- printf("%d\n",cuentas);
- AgregarCuenta(&Arbol,numero,id,cuentas);
- }
- }
- f2=fopen("Estado1.txt","a");
- fprintf(f2,"Situacion del Banco\n");
- fprintf(f2,"------------------------------------------------------------------\n");
- fprintf(f2,"Clientes\n");
- fprintf(f2,"------------------------------------------------------------------\n");
- fprintf(f2,"RUT\t\t N Cuentas\t\tSaldo\n");
- fprintf(f2,"------------------------------------------------------------------\n");
- arboles(Arbol,f2);
- fprintf(f2,"------------------------------------------------------------------\n");
- fprintf(f2,"Saldo total del Banco:\t\t%d",saldoBanco(Arbol));
- fclose(f);
- fclose(f2);
- system("pause");
- return(0);
- }
- void crearArbol(ArbolBinar *Arbol)
- {
- *Arbol=NULL;
- }
- int esVacio(ArbolBinar Arbol)
- {
- if(Arbol==NULL)
- {
- return(1);
- }
- else
- {
- return(0);
- }
- }
- ArbolBinar buscar_Nodo(ArbolBinar Arbol, int aBuscar)
- {
- ArbolBinar arb;
- arb=Arbol;
- if(arb==NULL)
- {
- return NULL;
- }
- if(arb->rut==aBuscar)
- {
- return arb;
- }
- else if(aBuscar<arb->rut)
- {
- return(buscar_Nodo(arb->izq,aBuscar));
- }
- else if(aBuscar>arb->rut)
- {
- return(buscar_Nodo(arb->der,aBuscar));
- }
- }
- ArbolBinar insertarNodo(Nodo *nod,ArbolBinar *Arbol)
- {
- ArbolBinar arb;
- arb=*Arbol;
- if(*Arbol==NULL)
- {
- *Arbol=nod;
- }
- else if((nod->rut)<(arb->rut))
- {
- insertarNodo(nod,&arb->izq);
- }
- else if((nod->rut)>(arb->rut))
- {
- insertarNodo(nod,&arb->der);
- }
- }
- t_lista *creanodo(void)
- {
- return (list)malloc(sizeof(t_lista));
- }
- void insertarCliente(ArbolBinar *Arbol,int rut)
- {
- ArbolBinar arb;
- arb=(ArbolBinar)malloc(sizeof(Nodo));
- arb->rut=rut;
- arb->id_cuentas=NULL;
- arb->izq=NULL;
- arb->der=NULL;
- insertarNodo(arb,Arbol);
- }
- int AgregarCuenta(ArbolBinar *Arbol, int rut, int id_cuenta, int saldo)
- {
- ArbolBinar arb;
- list aux2;
- list aux3;
- aux3=(list)malloc(sizeof(t_lista));
- arb=buscar_Nodo(*Arbol,rut);
- if(arb!=NULL)
- {
- aux2=arb->id_cuentas;
- aux3->id_cuenta=id_cuenta;
- aux3->saldo=saldo;
- aux3->sig=NULL;
- if(!arb->id_cuentas)arb->id_cuentas=aux3;
- else{
- while(aux2->sig)aux2=aux2->sig;
- aux2->sig=aux3;
- }
- return;
- }
- else
- {
- insertarCliente(Arbol,rut);
- AgregarCuenta(Arbol,rut,id_cuenta,saldo);
- return;
- }
- }
- int eliminarCuenta(ArbolBinar Arbol,int rut_cliente,int id_cuenta)
- {
- list aux2;
- list aux3;
- ArbolBinar arb;
- arb=buscar_Nodo(Arbol,rut_cliente);
- if(arb!=NULL)
- {
- aux2=arb->id_cuentas;
- if(aux2->id_cuenta==id_cuenta)
- {
- arb->id_cuentas=aux2->sig;
- free(aux2);
- return;
- }
- while(aux2)
- {
- if(aux2->id_cuenta==id_cuenta)
- {
- aux3->sig=aux2->sig;
- free(aux2);
- return;
- }
- aux3=aux2;
- aux2=aux2->sig;
- }
- }
- else
- {
- return -1;
- }
- }
- int modificar_Saldo(ArbolBinar Arbol, int rut, int id_Cuenta, int aCambiar)
- {
- ArbolBinar arb;
- list aux2;
- arb=Arbol;
- if(buscar_Nodo(arb, rut)!=NULL)
- {
- return -1;
- }
- aux2=arb->id_cuentas;
- while(aux2)
- {
- if(aux2->id_cuenta==id_Cuenta)
- {
- aux2->saldo+=aCambiar;
- return 0;
- }
- aux2=aux2->sig;
- }
- return -1;
- }
- int saldoCliente(ArbolBinar Arbol,int rut_cliente)
- {
- ArbolBinar arb;
- list aux;
- int suma=0;
- arb=Arbol;
- if(buscar_Nodo(arb, rut_cliente)!=NULL)
- {
- aux=arb->id_cuentas;
- while(aux)
- {
- suma+=aux->saldo;
- aux=aux->sig;
- }
- return suma;
- }
- else
- {
- return -1;
- }
- }
- void mostrarClientes(ArbolBinar Arbol)
- {
- ArbolBinar arb;
- arb=Arbol;
- if(arb->izq!=NULL)
- {
- printf("%d",arb->rut);
- printf("%d",saldoCliente(arb,arb->rut));
- mostrarClientes(arb->izq);
- }
- else if(arb->der!=NULL)
- {
- printf("%d",arb->rut);
- printf("%d",saldoCliente(arb,arb->rut));
- mostrarClientes(arb->der);
- }
- }
- int saldoBanco(ArbolBinar Arbol)
- {
- ArbolBinar arb;
- arb=Arbol;
- int total=0,rut;
- rut=arb->rut;
- if(arb==NULL)
- {
- return;
- }
- else if(arb->izq!=NULL)
- {
- total+=saldoBanco(arb->izq);
- }
- else if(arb->der!=NULL)
- {
- total+=saldoBanco(arb->der);
- }
- total+=saldoCliente(arb,rut);
- return total;
- }
- void arboles(ArbolBinar Arbol,FILE *f2)
- {
- ArbolBinar arb;
- list aux;
- arb=Arbol;
- int contador=0;
- aux=arb->id_cuentas;
- if(arb)
- {
- if(arb->izq)
- {
- arboles(arb->izq,f2);
- }
- fprintf(f2,"%d \t",arb->rut);
- while(aux)
- {
- contador++;
- aux=aux->sig;
- }
- fprintf(f2,"%d\t\t%d\n",contador,saldoCliente(arb,arb->rut));
- if(arb->der)
- {
- arboles(arb->der,f2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement