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#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
struct cuenta
{
char num[5];
char titular[];
int fecha;
float saldo;
};
void cargar(struct cuenta[]);
struct cuenta *buscar(struct cuenta[],char*);
void actualizar(struct cuenta [],float,int);
int cant_cuentas;
main()
{
struct cuenta *reg,*rta;
int tipo;
float monto;
char nro_cuent[5];
puts("Ingrese cantidad de cuentas"); scanf("%d",&cant_cuentas
); reg
=(struct cuenta
*)malloc(cant_cuentas
*sizeof(struct cuenta
));if (reg==NULL)
{
puts("Error de memoria"); }
else{
puts("Ingrese datos de la cuenta"); cargar(reg);
puts("Ingrese numero de cuenta"); puts("Ingrese monto y tipo de movimiento (monto/tipo)"); do{
puts("1-Agregar 2-Extraer"); }while(tipo!=1 && tipo!=2);
rta=buscar(reg,nro_cuent);
if(rta)
{
actualizar(rta,monto,tipo);
printf("La cuenta se actualizo correctamente, y su saldo es %f\n",(*rta
).
saldo); }
else puts("No se acntualizo la cuenta"); }/* Del else */
}
void cargar(struct cuenta r[])
{
int i;
for(i=0;i<cant_cuentas;i++)
{
puts("Ingrese numero de cuenta"); scanf("%s",r
[i
].
titular); puts("Ingrese fecha de apertura"); }
}
struct cuenta *buscar(struct cuenta r[],char *t)
{
int i=0;
do{
i++;
}while(strcmp(r
[i
-1].
num,t
)!=0 && i
<cant_cuentas
); {
return &r[i-1];
}
else return NULL;
}
void actualizar(struct cuenta r[],float m,int t)
{
if (t==1)
{
r->saldo=r->saldo+m;
}
else
{
r->saldo=r->saldo-m;
}
}
P.D: le agregue muchos fflush(stdin) por el tema de los buffers.
Desde ya les agradezco mucho. Saludos.