Autor
|
Tema: Ayuda con codigo de banco (Leído 8,404 veces)
|
Kenji-chan
Desconectado
Mensajes: 104
|
tal y como tienes ahora mismo el código tendrías que hacer otro switch dentro del caso 3 tomando el numero de cuenta ingresado por el usuario y para cada caso todos los números de cuenta almacenados pero si lo haces con estructuras y arrays solo tienes que recorrer el array en comparando el dato miembro del dato a buscar
|
|
|
En línea
|
|
|
|
MrAxelLag
Desconectado
Mensajes: 14
|
No te entiendo a lo que dices de recorrer el array, como podria realizar esto?
|
|
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
si tienes el código echo con una estruct y un arrar typedef struct{ char nombre[20]; char fecha[20]; char numero[20]; float saldo; }_persona; _persona personas[max];
puedes recorrer el array personas con un ciclo for for(i=0; i<max; i++){ if(personas[i].numero == buscar){ /*mostrar los datos de la persona*/ } }
|
|
|
En línea
|
|
|
|
MrAxelLag
Desconectado
Mensajes: 14
|
ok intente agregarle la funcion buscar de la manera en que me indicase pero no me imprime los datos. Sabes donde esta mi error?
#include <stdio.h> #include<stdlib.h> #include<conio.h>
#define p printf #define cls system("cls");
const int max = 10;
typedef struct{ char nombre[20]; char fecha[20]; char numero[20]; float saldo; }_persona;
void buscar(_persona personas[max]); void agregar(_persona* personas); void mostrar(const _persona* personas);
int main(int argc, char* argv[]){ int op, opc=0; _persona personas[max]; do{ cls; p("1.Agregar saldos\n"); p("2.-Ver saldos\n"); p("3.-Modificar saldos\n"); p("4.-Buscar saldos\n"); p("5.-Salir\n"); p("Que opcion desea ejecutar?\n "); scanf("%d",&op);
switch(op){ case 1: cls; agregar(personas); break; case 2: mostrar(personas); getch(); break; case 3: p("Ha elegido Modificar saldos...\n"); buscar(personas); break; } }while(opc != 5); }
void agregar(_persona* personas){ cls; int i; for(i=0; i<max; i++){ p("Digite su nombre: "); fflush(stdin); scanf("%s", personas.nombre); p("Digite su num. de cuenta: "); fflush(stdin); scanf("%s", personas.numero); p("Digite la fecha(dd-mm-aaaa)"); fflush(stdin); scanf("%s", personas.fecha); p("Digite el primer saldo:%c",36); fflush(stdin); scanf("%f",&personas.saldo); p("Su primer saldo es de: %c%.2f\n",36,personas.saldo); } }
void mostrar(const _persona* personas){ cls; int i; p("Ha elegido ver los saldos...\n"); for(i=0; i<max; i++){ p("Nombre: %s \n",personas.nombre); p("Numero de cuenta %s \n:",personas.numero); p("La fecha es %s \n:",personas.fecha); p("Su saldo es de: %c%.2f\n",36,personas.saldo); } }
void buscar(_persona* personas){ cls; int y,i; p("Introduzca numero de cuenta:"); scanf("%d",&y); for(i=0; i<max; i++){ if(personas.numero == y){ p("Nombre: %s \n",personas.nombre); p("Numero de cuenta %s \n:",personas.numero); p("La fecha es %s \n:",personas.fecha); p("Su saldo es de: %c%.2f\n",36,personas.saldo); } } }
|
|
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
El número de cuenta en el struc esta declarado como un char* (string) y en la función buscar lo capturas como un int ya sea que lo cambies en el estruct como un int o en la función como un char* y lo compares con la función strcmp () de la biblioteca string.h
|
|
|
En línea
|
|
|
|
MrAxelLag
Desconectado
Mensajes: 14
|
jamas habia usado la funcion de strcmp, ya que apenas estamos en lo basico, lo implemente de esta forma pero el program deja de funcionar, no estoy seguro si de lo implemente bien, tu que opinas?
void buscar(_persona* personas){ cls; int i,c; char y[20]; p("Introduzca numero de cuenta:"); scanf("%d",&y); c = strcmp( y, personas.numero); if (c = 0) for(i=0; i<max; i++){ if(personas.numero == y){ p("Nombre: %s \n",personas.nombre); p("Numero de cuenta %s \n:",personas.numero); p("La fecha es %s \n:",personas.fecha); p("Su saldo es de: %c%.2f\n",36,personas.saldo); } if (c != 0) p("El numero de cuenta no se encuentra"); } }
|
|
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
la funcion int strcmp(const char *str1, const char *str2) recibe dos parámetros si el valor de Retorno <0 indica que str1 es menor que str2. si Valor de retorno> 0 indica que str2 es menor que str1. si el valor de Retorno = 0 indica que str1 es igual a str2. ademas de que cuando capturas el string lo haces mal p("Introduzca numero de cuenta:");
cuando deberia de ser p("Introduzca numero de cuenta:");
pero si nunca has usado esta función mejor te recomiendo que cambies el tipo de variable a int en el struc de esa forma te sera mas fácil
|
|
|
En línea
|
|
|
|
MrAxelLag
Desconectado
Mensajes: 14
|
Es que igual con el %s me sigue cerrando el programa. y cambiando el tipo de variable en el struct, como quedaria el codigo en la funcion de buscar?
|
|
|
En línea
|
|
|
|
Kenji-chan
Desconectado
Mensajes: 104
|
si en el struct typedef struct{ char nombre[20]; char fecha[20]; int numero[20]; //lo cambiamos a int float saldo; }_persona;
entonces para buscarlo seria tan fácil como for(i=0; i<max; i++){ if(personas[i].numero == buscar){ /*mostrar los datos de la persona*/ break; //esto es para que pare de buscar } }
pero ten en cuenta que al cambiar el tipo de variable las funciones void agregar(_persona* personas); void mostrar(const _persona* personas);
se verán afectadas
|
|
|
En línea
|
|
|
|
MrAxelLag
Desconectado
Mensajes: 14
|
Vale, pero pese a ya corregir las funciones me sigue sin imprimir los datos al buscar, por que no sale ?, que estoy haciendo mal?
#include <stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h>
#define p printf #define cls system("cls");
const int max = 10;
typedef struct{ char nombre[20]; char fecha[20]; int numero[20]; float saldo; }_persona;
void buscar(_persona* personas); void agregar(_persona* personas); void mostrar(const _persona* personas);
int main(int argc, char* argv[]){ int op, opc=0; _persona personas[max]; do{ cls; p("1.Agregar saldos\n"); p("2.-Ver saldos\n"); p("3.-Modificar saldos\n"); p("4.-Buscar saldos\n"); p("5.-Salir\n"); p("Que opcion desea ejecutar?\n "); scanf("%d",&op);
switch(op){ case 1: cls; agregar(personas); break; case 2: mostrar(personas); getch(); break; case 3: getch(); p("Ha elegido Modificar saldos...\n"); getch(); buscar(personas); getch(); break; } }while(opc != 5); }
void agregar(_persona* personas){ cls; int i; for(i=0; i<max; i++){ p("Digite su nombre: "); fflush(stdin); scanf("%s", personas.nombre); p("Digite su num. de cuenta: "); fflush(stdin); scanf("%d", personas.numero); p("Digite la fecha(dd-mm-aaaa)"); fflush(stdin); scanf("%s", personas.fecha); p("Digite el primer saldo:%c",36); fflush(stdin); scanf("%f",&personas.saldo); p("Su primer saldo es de: %c%.2f\n",36,personas.saldo); } }
void mostrar(const _persona* personas){ cls; int i; p("Ha elegido ver los saldos...\n"); for(i=0; i<max; i++){ p("Nombre: %s \n",personas.nombre); p("Numero de cuenta %d \n:",personas.numero); p("La fecha es %s \n:",personas.fecha); p("Su saldo es de: %c%.2f\n",36,personas.saldo); } }
void buscar(_persona* personas){ cls; int i,c,bus; p("Introduzca numero de cuenta:"); scanf("%s",&bus); for(i=0; i<max; i++){ if(personas.numero == bus){ p("Nombre: %s \n",personas.nombre); p("Numero de cuenta %d \n:",personas.numero); p("La fecha es %s \n:",personas.fecha); p("Su saldo es de: %c%.2f\n",36,personas.saldo); break; } } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
banco de imagenes
Diseño Gráfico
|
SAM N
|
2
|
2,304
|
13 Marzo 2006, 01:40 am
por SAM N
|
|
|
ayuda con sistema banco
Java
|
batmanchillan
|
9
|
5,602
|
16 Noviembre 2012, 00:26 am
por HalconEye
|
|
|
Ayuda con programa Banco y Cuentas
Java
|
pepeneitor33
|
1
|
8,191
|
16 Abril 2013, 01:01 am
por javituni
|
|
|
Ayuda banco del tiempo
Desarrollo Web
|
txus93
|
0
|
1,712
|
21 Noviembre 2013, 00:58 am
por txus93
|
|
|
Programa d eun Banco AYUDA!
Java
|
SMHEBER
|
2
|
3,163
|
2 Octubre 2017, 17:10 pm
por PalitroqueZ
|
|