Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct lista
  5. {
  6. int id_cuenta;
  7. int saldo;
  8. struct lista *sig;
  9. }t_lista;
  10. typedef t_lista *list;
  11.  
  12. typedef struct nodo
  13. {
  14. int rut;
  15. list id_cuentas;
  16. struct nodo *izq;
  17. struct nodo *der;
  18. }Nodo;
  19. typedef Nodo *ArbolBinar;
  20.  
  21. void crearArbol(ArbolBinar*);
  22. ArbolBinar insertarNodo(Nodo*,ArbolBinar*);
  23. int esVacio(ArbolBinar);
  24. ArbolBinar buscar_Nodo(ArbolBinar,int);
  25. int AgregarCuenta(ArbolBinar*,int,int,int);
  26. int ModificarSaldo(ArbolBinar*,int,int,int);
  27. void EliminarCuenta(ArbolBinar*,int,int);
  28. int SaldoCliente(ArbolBinar,int);
  29. void MostrarClientes(ArbolBinar);
  30. int SaldoBanco(ArbolBinar);
  31. void insertarCliente(ArbolBinar*,int);
  32. void arboles(ArbolBinar,FILE*);
  33.  
  34.  
  35. int main()
  36. {
  37. int cli,cuentas,numero,i,j,id,num_cuentas,contador=0;
  38. FILE *f,*f2,*f3;
  39. list aux;
  40. ArbolBinar Arbol;
  41. crearArbol(&Arbol);
  42. f=fopen("Clientes.txt","r");
  43. fscanf(f,"%d",&cli);
  44. printf("%d\n",cli);
  45. for(i=0;i<cli;i++)
  46. {
  47. fscanf(f,"%d",&numero);
  48. printf("%d\n",numero);
  49. fscanf(f,"%d",&num_cuentas);
  50. printf("%d\n",num_cuentas);
  51. for(j=0;j<num_cuentas;j++)
  52. {
  53. fscanf(f,"%d",&id);
  54. printf("%d\n",id);
  55. fscanf(f,"%d",&cuentas);
  56. printf("%d\n",cuentas);
  57. AgregarCuenta(&Arbol,numero,id,cuentas);
  58. }
  59. }
  60. f2=fopen("Estado1.txt","a");
  61. fprintf(f2,"Situacion del Banco\n");
  62. fprintf(f2,"------------------------------------------------------------------\n");
  63. fprintf(f2,"Clientes\n");
  64. fprintf(f2,"------------------------------------------------------------------\n");
  65. fprintf(f2,"RUT\t\t N Cuentas\t\tSaldo\n");
  66. fprintf(f2,"------------------------------------------------------------------\n");
  67. arboles(Arbol,f2);
  68. fprintf(f2,"------------------------------------------------------------------\n");
  69. fprintf(f2,"Saldo total del Banco:\t\t%d",saldoBanco(Arbol));
  70. fclose(f);
  71. fclose(f2);
  72. system("pause");
  73. return(0);
  74. }
  75. void crearArbol(ArbolBinar *Arbol)
  76. {
  77. *Arbol=NULL;
  78. }
  79. int esVacio(ArbolBinar Arbol)
  80. {
  81. if(Arbol==NULL)
  82. {
  83. return(1);
  84. }
  85. else
  86. {
  87. return(0);
  88. }
  89. }
  90. ArbolBinar buscar_Nodo(ArbolBinar Arbol, int aBuscar)
  91. {
  92. ArbolBinar arb;
  93. arb=Arbol;
  94. if(arb==NULL)
  95. {
  96. return NULL;
  97. }
  98. if(arb->rut==aBuscar)
  99. {
  100. return arb;
  101. }
  102. else if(aBuscar<arb->rut)
  103. {
  104. return(buscar_Nodo(arb->izq,aBuscar));
  105. }
  106. else if(aBuscar>arb->rut)
  107. {
  108. return(buscar_Nodo(arb->der,aBuscar));
  109. }
  110. }
  111.  
  112. ArbolBinar insertarNodo(Nodo *nod,ArbolBinar *Arbol)
  113. {
  114. ArbolBinar arb;
  115. arb=*Arbol;
  116. if(*Arbol==NULL)
  117. {
  118.  
  119. *Arbol=nod;
  120. }
  121. else if((nod->rut)<(arb->rut))
  122. {
  123. insertarNodo(nod,&arb->izq);
  124. }
  125. else if((nod->rut)>(arb->rut))
  126. {
  127. insertarNodo(nod,&arb->der);
  128. }
  129.  
  130. }
  131. t_lista *creanodo(void)
  132. {
  133. return (list)malloc(sizeof(t_lista));
  134. }
  135. void insertarCliente(ArbolBinar *Arbol,int rut)
  136. {
  137. ArbolBinar arb;
  138. arb=(ArbolBinar)malloc(sizeof(Nodo));
  139. arb->rut=rut;
  140. arb->id_cuentas=NULL;
  141. arb->izq=NULL;
  142. arb->der=NULL;
  143. insertarNodo(arb,Arbol);
  144. }
  145. int AgregarCuenta(ArbolBinar *Arbol, int rut, int id_cuenta, int saldo)
  146. {
  147. ArbolBinar arb;
  148. list aux2;
  149. list aux3;
  150. aux3=(list)malloc(sizeof(t_lista));
  151. arb=buscar_Nodo(*Arbol,rut);
  152. if(arb!=NULL)
  153. {
  154. aux2=arb->id_cuentas;
  155. aux3->id_cuenta=id_cuenta;
  156. aux3->saldo=saldo;
  157. aux3->sig=NULL;
  158. if(!arb->id_cuentas)arb->id_cuentas=aux3;
  159. else{
  160. while(aux2->sig)aux2=aux2->sig;
  161. aux2->sig=aux3;
  162. }
  163. return;
  164. }
  165. else
  166. {
  167. insertarCliente(Arbol,rut);
  168. AgregarCuenta(Arbol,rut,id_cuenta,saldo);
  169. return;
  170. }
  171. }
  172.  
  173. int eliminarCuenta(ArbolBinar Arbol,int rut_cliente,int id_cuenta)
  174. {
  175. list aux2;
  176. list aux3;
  177. ArbolBinar arb;
  178. arb=buscar_Nodo(Arbol,rut_cliente);
  179. if(arb!=NULL)
  180. {
  181. aux2=arb->id_cuentas;
  182. if(aux2->id_cuenta==id_cuenta)
  183. {
  184. arb->id_cuentas=aux2->sig;
  185. free(aux2);
  186. return;
  187. }
  188. while(aux2)
  189. {
  190.  
  191. if(aux2->id_cuenta==id_cuenta)
  192. {
  193. aux3->sig=aux2->sig;
  194. free(aux2);
  195. return;
  196. }
  197.  
  198. aux3=aux2;
  199. aux2=aux2->sig;
  200. }
  201. }
  202. else
  203. {
  204. return -1;
  205. }
  206. }
  207. int modificar_Saldo(ArbolBinar Arbol, int rut, int id_Cuenta, int aCambiar)
  208. {
  209. ArbolBinar arb;
  210. list aux2;
  211. arb=Arbol;
  212. if(buscar_Nodo(arb, rut)!=NULL)
  213. {
  214. return -1;
  215. }
  216. aux2=arb->id_cuentas;
  217. while(aux2)
  218. {
  219. if(aux2->id_cuenta==id_Cuenta)
  220. {
  221. aux2->saldo+=aCambiar;
  222. return 0;
  223. }
  224. aux2=aux2->sig;
  225. }
  226. return -1;
  227. }
  228. int saldoCliente(ArbolBinar Arbol,int rut_cliente)
  229. {
  230. ArbolBinar arb;
  231. list aux;
  232. int suma=0;
  233. arb=Arbol;
  234. if(buscar_Nodo(arb, rut_cliente)!=NULL)
  235. {
  236. aux=arb->id_cuentas;
  237. while(aux)
  238. {
  239. suma+=aux->saldo;
  240. aux=aux->sig;
  241. }
  242. return suma;
  243. }
  244. else
  245. {
  246. return -1;
  247. }
  248. }
  249. void mostrarClientes(ArbolBinar Arbol)
  250. {
  251. ArbolBinar arb;
  252. arb=Arbol;
  253. if(arb->izq!=NULL)
  254. {
  255. printf("%d",arb->rut);
  256. printf("%d",saldoCliente(arb,arb->rut));
  257. mostrarClientes(arb->izq);
  258. }
  259. else if(arb->der!=NULL)
  260. {
  261. printf("%d",arb->rut);
  262. printf("%d",saldoCliente(arb,arb->rut));
  263. mostrarClientes(arb->der);
  264. }
  265.  
  266. }
  267. int saldoBanco(ArbolBinar Arbol)
  268. {
  269. ArbolBinar arb;
  270. arb=Arbol;
  271. int total=0,rut;
  272. rut=arb->rut;
  273. if(arb==NULL)
  274. {
  275. return;
  276. }
  277. else if(arb->izq!=NULL)
  278. {
  279.  
  280. total+=saldoBanco(arb->izq);
  281. }
  282. else if(arb->der!=NULL)
  283. {
  284. total+=saldoBanco(arb->der);
  285. }
  286. total+=saldoCliente(arb,rut);
  287. return total;
  288. }
  289.  
  290. void arboles(ArbolBinar Arbol,FILE *f2)
  291. {
  292. ArbolBinar arb;
  293. list aux;
  294. arb=Arbol;
  295. int contador=0;
  296. aux=arb->id_cuentas;
  297. if(arb)
  298. {
  299. if(arb->izq)
  300. {
  301. arboles(arb->izq,f2);
  302. }
  303. fprintf(f2,"%d \t",arb->rut);
  304. while(aux)
  305. {
  306. contador++;
  307. aux=aux->sig;
  308. }
  309. fprintf(f2,"%d\t\t%d\n",contador,saldoCliente(arb,arb->rut));
  310. if(arb->der)
  311. {
  312. arboles(arb->der,f2);
  313. }
  314. }
  315. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement