Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/02/2013, 12:25
extol
 
Fecha de Ingreso: enero-2013
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Duda con un programa en C

Hola a todos. Queria saber si por favor me podian ayudar. Tengo este programa en C y funciona todo bien, hasta la función 'buscar', alli se sale..Para mi es el tema de la busqueda secuencial que hago.

El ejercicio estaba a medio hacer, y yo debía completarlo.



Código C:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<windows.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6.  
  7. struct cuenta
  8. {
  9. char num[5];
  10. char titular[];
  11. int fecha;
  12. float saldo;
  13. };
  14.  
  15. void cargar(struct cuenta[]);
  16. struct cuenta *buscar(struct cuenta[],char*);
  17. void actualizar(struct cuenta [],float,int);
  18. int cant_cuentas;
  19.  
  20. main()
  21. {
  22. struct cuenta *reg,*rta;
  23. int tipo;
  24. float monto;
  25. char nro_cuent[5];
  26. puts("Ingrese cantidad de cuentas");
  27. fflush(stdin);
  28. scanf("%d",&cant_cuentas);
  29. reg=(struct cuenta*)malloc(cant_cuentas*sizeof(struct cuenta));
  30. if (reg==NULL)
  31. {
  32. puts("Error de memoria");
  33. }
  34. else{
  35. puts("Ingrese datos de la cuenta");
  36. cargar(reg);
  37. system("cls");
  38. puts("Acutalizar");
  39. puts("Ingrese numero de cuenta");
  40. fflush(stdin);
  41. scanf("%s",nro_cuent);
  42. puts("Ingrese monto y tipo de movimiento (monto/tipo)");
  43. fflush(stdin);
  44. scanf("%f",&monto);
  45. do{
  46. puts("1-Agregar 2-Extraer");
  47. fflush(stdin);
  48. scanf("%d",&tipo);
  49. }while(tipo!=1 && tipo!=2);
  50. rta=buscar(reg,nro_cuent);
  51. if(rta)
  52. {
  53. actualizar(rta,monto,tipo);
  54. printf("La cuenta se actualizo correctamente, y su saldo es %f\n",(*rta).saldo);
  55. }
  56. else puts("No se acntualizo la cuenta");
  57. }/* Del else */
  58. }
  59.  
  60.  
  61.  
  62.  
  63. void cargar(struct cuenta r[])
  64. {
  65. int i;
  66. for(i=0;i<cant_cuentas;i++)
  67. {
  68. puts("Ingrese numero de cuenta");
  69. fflush(stdin);
  70. scanf("%s",r[i].num);
  71. fflush(stdin);
  72. puts("Ingrese titular");
  73. fflush(stdin);
  74. scanf("%s",r[i].titular);
  75. puts("Ingrese fecha de apertura");
  76. fflush(stdin);
  77. scanf("%d",&r[i].fecha);
  78. puts("Ingrese saldo");
  79. fflush(stdin);
  80. scanf("%f",&r[i].saldo);
  81. }
  82. }
  83.  
  84. struct cuenta *buscar(struct cuenta r[],char *t)
  85. {
  86. int i=0;
  87. do{
  88. i++;
  89. }while(strcmp(r[i-1].num,t)!=0 && i<cant_cuentas);
  90. if (strcmp(r[i-1].num,t)==0)
  91. {  
  92. return &r[i-1];
  93. }
  94. else return NULL;
  95. }
  96.  
  97. void actualizar(struct cuenta r[],float m,int t)
  98. {
  99. if (t==1)
  100. {
  101. r->saldo=r->saldo+m;
  102. }
  103. else
  104. {
  105. r->saldo=r->saldo-m;
  106. }
  107. }


P.D: le agregue muchos fflush(stdin) por el tema de los buffers.

Desde ya les agradezco mucho. Saludos.