elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  quine me ayuda arreglar la parte de eliminar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: quine me ayuda arreglar la parte de eliminar  (Leído 1,726 veces)
geshiro

Desconectado Desconectado

Mensajes: 178


Ver Perfil
quine me ayuda arreglar la parte de eliminar
« en: 17 Junio 2015, 04:47 am »

 la parte de eliminar si borra bien pero cuando borro si me borra bien pero cuando quiero borrar la cuenta 1  no me deja como lo arreglo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #include <string.h>
  6. /*malloc-free-alloc-realloc unsigned*/
  7. struct nodo{//DEFINE LA ESTRUCTURA
  8. char nombre[128];
  9. char fecha[10];
  10. int cuenta;
  11. float saldo;
  12. struct nodo * sig;//SE CREA EL APUNTADOR DEL TAMAÑO DE UN NODO SIMILAR
  13. };
  14. typedef struct nodo NODO;//DEFINE TIPO DE DATO A PARTIR DE LA ESTRUCTURA DE nodo
  15. typedef NODO *NODOPTR;//DEFINE UN TIPO DE APUNTADOR BASADO EN EL TAMAÑO DE NODO
  16. NODOPTR fin=NULL,aux=NULL;
  17. int isEmpty(NODOPTR cima){//RECIBE LA CIMA PARA LA COMPARACION
  18. return (cima == NULL);
  19. }
  20. void add(NODOPTR * cima,NODOPTR * final,char nombre[128],char fecha[10],int cuenta,float saldo){//se agrega un nodo que la ara de final
  21. system("cls");
  22. NODOPTR nuevo;//APUNTADOR PARA EL NUEVO DATO
  23. NODOPTR actual;//APUNTADOR TEMPORAL QUE SE UTILIZA CUANDO EXISTE AL MENOS UN DATO
  24. nuevo = (NODO *) malloc(sizeof(NODO));//REGRESA LA DIRECCION DE UN BLOQUE DE MEMORIA EN EL CUAL SE ASIGNARAN LOS VALORES
  25. if(nuevo==NULL){
  26. printf("No se puede agregar");
  27. }else{
  28. if(isEmpty(*cima)){//SE ASIGNAN LOS VALORES RECIBIDOS POR LA FUNCION
  29. strcpy(nuevo->nombre,nombre);
  30. strcpy(nuevo->fecha,fecha);
  31. nuevo->cuenta = cuenta;
  32. nuevo->saldo = saldo;
  33. nuevo->sig = NULL;//SE ASIGNA NULO POR QUE EL PRIMERO
  34. *cima = nuevo;//AL SER EL PRIMERO SE ESTABLECE COMO LA CIMA
  35. *final=nuevo;//AL SER EL ULTIMO SE ESTABLECE COMO EL FINAL
  36. }else{
  37. actual = *cima;//SE ALMACENA EL APUNTADOR DE LA CIMA ACTUAL
  38. while(actual->sig != NULL){//SE RECORREN TODOS LOS ELEMENTOS DE LA COLA HASTA ENCONTRAR UN VALOR "NULL" EN LA PROPIEDAD DE SIGUIENTE
  39. actual = actual->sig;//SE ASIGNA LA ESTRUCTURA SIGUIENTE A LA ACTUAL
  40. }
  41. strcpy(nuevo->nombre,nombre);
  42. strcpy(nuevo->fecha,fecha);
  43. nuevo->cuenta = cuenta;
  44. nuevo->saldo = saldo;
  45. nuevo->sig = NULL;
  46. actual->sig = nuevo;//SE ASIGNA EL APUNTADOR DEL NUEVO ELEMENTO AL ULTIMO
  47. }
  48. }
  49. }
  50. /*void remove(NODOPTR *cima,int id){//RECIBE EL APUNTADOR DONDE SE ENCUENTRA LA CIMA
  51. NODOPTR temp;//SE CREA UN NODO TEMPORAL
  52. temp = *cima;//ALMACENA EL APUNTADOR DE LA CIMA
  53. *cima = (*cima)->sig;//SE ALMACENA EL APUNTADOR DEL SIGUIENTE ELEMENTO EN LA LOCACION DE LA CIMA
  54. free(temp);//SE LIBERA LA LOCACION DE MEMORIA TEMPORAL DONDE SE ENCONTRABA LA CIMA ACTUAL
  55. }*/
  56. void baja(NODOPTR cima,NODOPTR final,NODOPTR aux,int cuentaa)
  57. {
  58. NODOPTR nuevo;
  59. for(nuevo=cima;nuevo!=NULL;aux=nuevo,nuevo=nuevo->sig)
  60. {
  61. if(nuevo->cuenta==cuentaa)
  62. {
  63. if(nuevo==cima)
  64.      {
  65.  cima=cima->sig;
  66.  free(nuevo);
  67.     }
  68. else if(nuevo==final)
  69.    {
  70. final=aux;
  71. free(nuevo);
  72. final->sig=NULL;
  73.    }
  74.   else
  75.    {
  76. aux->sig=nuevo->sig;
  77. free(nuevo);
  78.    }
  79. break;
  80. }
  81.  
  82. }
  83. }
  84. void show(NODOPTR cima){//RECIBE LA CIMA
  85. system("cls");
  86. if(cima == NULL){
  87. printf("La cola esta vacia");
  88. }else{
  89. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  90. printf("-----------------------------------------------------\n");
  91. printf("Numero de cuenta:%d\n",cima->cuenta);
  92. printf("Nombre:%s\n",cima->nombre);
  93. printf("Fecha de nacimiento:%s\n",cima->fecha);
  94. printf("Saldo:%f:\n",cima->saldo);
  95. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  96. }
  97. }
  98. getch();
  99. }
  100. int find(NODOPTR cima,int cuenta){//RECIBE LA CIMA
  101. int found = 0;
  102. if(cima == NULL){
  103. printf("La cola esta vacia");
  104. }else{
  105. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  106. if(cima->cuenta == cuenta){
  107. found = 1;
  108. break;
  109. }
  110. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  111. }
  112. }
  113. return found;
  114. }
  115. int edit(NODOPTR cima,int cuenta,char nombre[128],char fecha[10]){//RECIBE LA CIMA
  116. int success = 0;
  117. if(cima == NULL){
  118. printf("La cola esta vacia");
  119. }else{
  120. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  121. if(cima->cuenta == cuenta){
  122. strcpy(cima->nombre,nombre);
  123. strcpy(cima->fecha,fecha);
  124. success = 1;
  125. break;
  126. }
  127. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  128. }
  129. }
  130. return success;
  131. }
  132. int deposito(NODOPTR cima,int cuenta,int cantidad){//RECIBE LA CIMA
  133. int success = 0;
  134. if(cima == NULL){
  135. printf("La cola esta vacia");
  136. }else{
  137. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  138. if(cima->cuenta == cuenta){
  139. cima->saldo+=cantidad;
  140. success = 1;
  141. break;
  142. }
  143. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  144. }
  145. }
  146. return success;
  147. }
  148. int retirar(NODOPTR cima,int cuenta,int cantidad){//RECIBE LA CIMA//
  149. int success = 0;
  150. if(cima == NULL){
  151. printf("La cola esta vacia");
  152. }else{
  153. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  154. if(cima->cuenta == cuenta){
  155. if(cima->saldo>=cantidad){
  156. cima->saldo-=cantidad;
  157. success = 1;
  158. break;
  159. }else
  160. printf("No cuenta con el saldo suficiente\n");
  161. }
  162. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  163. }
  164. }
  165. return success;
  166. }
  167. //RETORNO DE APUNTADOR
  168. NODOPTR findptr(NODOPTR cima,int cuenta){//RECIBE LA CIMA
  169. NODOPTR found = NULL;
  170. if(cima == NULL){
  171. printf("La cola esta vacia");
  172. }else{
  173. while(cima != NULL){//RECORRE HASTA ENCONTRAR EL ULTIMO ELEMENTO
  174. if(cima->cuenta == cuenta){
  175. found = cima;
  176. break;
  177. }
  178. cima = cima->sig;//SE ASIGNA EL SIGUIENTE A LA CIMA ACTUAL
  179. }
  180. }
  181. return found;
  182. }
  183. int main(){
  184. NODOPTR cima = NULL;
  185. /*NODOPTR cuenta_1 = NULL;
  186. NODOPTR cuenta_2 = NULL;*/
  187. int cuenta_1,cuenta_2;
  188. int x = 0;
  189. //Variables
  190. char nombre[128];
  191. char fecha[100];
  192. int cuenta,cuenta_3;
  193. float cantidad;
  194. strcpy(nombre,"Roberto");
  195. strcpy(fecha,"1991-06-07");
  196. add(&cima,&fin,nombre,fecha,1,1000.00);
  197. strcpy(nombre,"Saul");
  198. strcpy(fecha,"1996-09-30");
  199. add(&cima,&fin,nombre,fecha,2,1900.00);
  200. //show(cima);
  201. /*cuenta_1 = findptr(cima,1);
  202. cuenta_2 = findptr(cima,2);
  203. printf("%f\n",cuenta_1->saldo);
  204. printf("%f\n",cuenta_2->saldo);
  205. return 0; */
  206. do{
  207. system("cls");
  208. printf("Seleccione una opcion\n");
  209. printf("1.Agregar\n");
  210. printf("2.Modificar\n");
  211. printf("3.Desplegar cuentas\n");
  212. printf("4.Deposito\n");
  213. printf("5.Retiro\n");
  214. printf("6.Transferencia\n");
  215. printf("7.Baja\n");
  216. printf("0.Salir\n");
  217. scanf("%d",&x);
  218. switch(x){
  219. case 1:
  220. system("cls");
  221. printf("Ingrese el nombre del titular:\n");
  222. fflush(stdin);
  223. gets(nombre);//fgets(nombre,sizeof(nombre),stdin);
  224. system("cls");
  225. printf("Ingrese la fecha de nacimiento del titular:\n");
  226. fflush(stdin);
  227. gets(fecha);//fgets(fecha,sizeof(fecha),stdin);
  228. do{
  229. system("cls");
  230. printf("Ingrese el numero de cuenta del titular:\n");
  231. scanf("%d",&cuenta);
  232. }while(find(cima,cuenta)==1);
  233. add(&cima,&fin,nombre,fecha,cuenta,0.00);//////////////// SE AGREGO FINAL
  234. break;
  235. case 2:
  236. do{
  237. system("cls");
  238. printf("Ingrese el numero de cuenta:\n");
  239. scanf("%d",&cuenta);
  240. }while((find(cima,cuenta))==0);
  241. if(cuenta != 0){
  242. system("cls");
  243. printf("Ingrese el nombre del titular:\n");
  244. fflush(stdin);
  245. gets(nombre);
  246. system("cls");
  247. printf("Ingrese la fecha de nacimiento del titular:\n");
  248. fflush(stdin);
  249. gets(fecha);
  250. if(edit(cima,cuenta,nombre,fecha)==1)
  251. printf("Sus datos fueron almacenados\n");
  252. else
  253. printf("Hubo un error al almacenar sus datos\n");
  254. }
  255. break;
  256. case 3:
  257. show(cima);
  258. break;
  259. case 4:
  260. do{
  261. system("cls");
  262. printf("Ingrese el numero de cuenta:\n");
  263. scanf("%d",&cuenta);
  264. }while((find(cima,cuenta))==0);
  265. if(cuenta != 0){
  266. system("cls");
  267. printf("Ingrese la cantidad a depositar:\n");
  268. scanf("%f",&cantidad);
  269. if(deposito(cima,cuenta,cantidad)==1)
  270. printf("Deposito realizado con exito\n");
  271. else
  272. printf("Hubo un error al depositar\n");
  273. }
  274. break;
  275. case 5:
  276. do{
  277. system("cls");
  278. printf("Ingrese el numero de cuenta:\n");
  279. scanf("%d",&cuenta);
  280. }while((find(cima,cuenta))==0);
  281. if(cuenta != 0){
  282. system("cls");
  283. printf("Ingrese la cantidad a retirar:\n");
  284. scanf("%f",&cantidad);
  285. if(retirar(cima,cuenta,cantidad)==1)
  286. printf("Retiro realizado con exito\n");
  287. else
  288. printf("Hubo un error al retirar\n");
  289. }
  290. break;
  291. case 6:
  292. do{
  293. system("cls");
  294. printf("Ingrese el numero de cuenta benefactora:\n");
  295. scanf("%d",&cuenta_1);
  296. }while((find(cima,cuenta_1))==0);
  297. do{
  298. system("cls");
  299. printf("Ingrese el numero de cuenta beneficiario:\n");
  300. scanf("%d",&cuenta_2);
  301. }while((find(cima,cuenta_2))==0);
  302. if(cuenta_1 != 0 && cuenta_2 != 0){
  303. system("cls");
  304. printf("Ingrese la cantidad a transferir:\n");
  305. scanf("%f",&cantidad);
  306. if(retirar(cima,cuenta_1,cantidad)==1){
  307. if(deposito(cima,cuenta_2,cantidad))
  308. printf("Transferencia realizada con exito\n");
  309. }else
  310. printf("Hubo un error al retirar\n");
  311. }
  312. break;
  313. case 7:// ELIMINA
  314.  
  315. system("cls");
  316. printf("°NO ELIMINAR EL 1°\n");
  317. printf("Que cuenta quieres darle de baja ? :\n");
  318. scanf("%d",&cuenta_3);
  319. baja(cima,fin,aux,cuenta_3);
  320.        break;
  321. }
  322. }while(x!=0);
  323.  
  324. return 0;
  325. }
  326.  


« Última modificación: 17 Junio 2015, 04:56 am por geshiro » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: quien me ayuda c
« Respuesta #1 en: 17 Junio 2015, 04:51 am »

Aclaro reglas del foro... los titulos de los temas deben ser descriptivos


"quien me ayuda c" no es descriptivo (al igual que ninguno de tus titulos anteriores)

si publicas un tema en C/C++ se obvia que es solicitando una ayuda sobre C o C++, y lo de "quien" se sobreentiende...

por favor coloca un titulo claro y descriptivo al problema


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Quine Mcckluskey
Electrónica
Zynnalft86 0 2,535 Último mensaje 19 Noviembre 2007, 20:02 pm
por Zynnalft86
Eliminar parte de una linea a partir de cadena
PHP
athlit 2 3,639 Último mensaje 9 Julio 2009, 12:59 pm
por athlit
arreglar video AVI con parte del sonido roto
Multimedia
deconya 1 4,073 Último mensaje 30 Agosto 2011, 01:22 am
por Songoku
quien me ayuda en la parte de eliminar
PHP
geshiro 7 3,212 Último mensaje 25 Junio 2015, 06:57 am
por geshiro
ayuda parte eliminar
PHP
geshiro 8 2,772 Último mensaje 25 Octubre 2015, 21:47 pm
por geshiro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines