| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 15/10/2004 5:42 am | | | Título: ::: problema con un cajero ::: |
| hola nuevamente!! primero que todo, quiero dar las gracias a todos los que nos ayudan en este foro y junto con esto queria plantearles una duda. hice un algoritmo de un cajero y me gustaria seber que es lo que falla pues quiero depositar dinero y me sale una cantidad negativa a pesar que puse long int. bueno, espero que me ayuden.  de antemano muchas gracias!
aqui les dejo el algorotmo que hice ...
| Código: | #include<stdio.h> #include<conio.h>
void menu() { long int x,y,z,i; char letra; i=0; do { printf("\n\n\t\t:::Bienvenido a cajeros Pretoriano S.A:::"); printf("\n\n\tSeleccione la opcion que decea realizar:"); printf("\n\n\t(C)onsulta de saldo"); printf("\n\t(R)etiro de dinero"); printf("\n\t(D)eposito de dinero"); printf("\n\t(S)alir del menu"); letra=getch(); switch(letra) { case 'd': clrscr(); printf("\n\n\tIngrese la cantidad a depositar==>"); scanf("%ld",x); i+=x; printf("\n\n\tSu saldo total despues del deposito es==> %ld",i); break; case 'r': clrscr(); printf("\n\n\tIngrese la cantidad que desea retirar==>"); scanf("%ld",y); if(y>i) printf("\n\tEl monto que desea retirar es superior a su saldo en la cuenta"); else printf("\n\tSu saldo despues del retiro es ==> %ld",i-y); break; case 'c': clrscr(); printf("\n\n\tSu saldo actual es==> %ld",i-y); break; case 's': clrscr(); printf("\n\n\t:::Gracias por preferirnos:::"); printf("\n\n\t:::Hasta pronto:::"); getch(); exit(); } } while(letra== 's'); }
void main() { clrscr(); menu(); }
|
|
| | Volver arriba | |  | arthas
Registrado: 20 Sep 2004 Mensajes: 143
| Publicado: 15/10/2004 6:10 am | | | Título: |
| Hola
Usa float para numeros muy altos.
Salu2 |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 15/10/2004 5:02 pm | | | Título: |
| gracias, ya lo hice ; ) cuando pueda lo publico... muchas gracias! |
| | Volver arriba | |  | | elColme

Registrado: 14 Abr 2004 Mensajes: 102 Ubicación: España
| Publicado: 16/10/2004 1:26 am | | | Título: Error sintaxis |
| Hola kykyyou:
A simple vista, y en el código que tienes posteado, no realizas bien la lectura de los datos que le pides al usuario dentro de la estructura de selección múltiple.Ya que a scanf no le pasas un puntero como segundo parámetro.Ese pude ser el motivo de la cantidad negativa que mencionas.
Saludos. |
| | Volver arriba | |  | oscardo
Registrado: 15 Oct 2004 Mensajes: 1
| Publicado: 16/10/2004 7:39 am | | | Título: Mira este codigo!!! suerte.... |
| #include<stdio.h> #include<conio.h> void menu(){ //listo la funcion, esta bien long int x=0,y=0,z=0,i=0; //primer error todas las variables siempre deben //inicializarlas en cero (0) o uno (1) o el valor que deseas iniciar //te recomendaria que usaras float (real o con punto flotante) -> solo //cambias %ld por %f y para mostrar puedes usar %.2f asi restrigiras el uso //de mas numeros despues del punto flotante //con %f = se mostraria un dato 25.34002241 //con %.2f = se mostraria un dato 25.34 asi manejarias centavos char letra; //aun no manejas punteros pero seria interesante que los //aprendieran i=0; //listo pero no todos esta inicializador OJO do{ //simplifica estructuras C permite hacer estructuras mas compactas printf("\n\n\t\t:::Bienvenido a cajeros Pretoriano S.A:::"); //ok printf("\n\n\tSeleccione la opcion que decea realizar:"); printf("\n\n\t(C)onsulta de saldo"); printf("\n\t(R)etiro de dinero"); printf("\n\t(D)eposito de dinero"); printf("\n\t(S)alir del menu"); letra=getch(); //ok switch(letra){ case 'd': clrscr(); printf("\n\n\tIngrese la cantidad a depositar==>"); scanf("%ld",&x); //segundo error es es b sico si tienes una //variable tienes que guardarla o sino te dara valores negativos /* una forma es con el &x, que almacenara la informacion q deseas en la variable */ i+=x; //ok printf("\n\n\tSu saldo total despues del deposito es==> %ld",i); break; case 'r': clrscr(); printf("\n\n\tIngrese la cantidad que desea retirar==>"); scanf("%ld",&y); //otro error el & if(y>i) //ok printf("\n\tEl monto que desea retirar es superior a su saldo en la cuenta"); else //ok printf("\n\tSu saldo despues del retiro es ==> %ld",i-y); break; case 'c': clrscr(); printf("\n\n\tSu saldo actual es==> %ld",i-y); //puedes usar un aux o total = i - y; break; case 's': clrscr(); printf("\n\n\t:::Gracias por preferirnos:::"); printf("\n\n\t:::Hasta pronto:::"); getch(); exit(); } }while(letra == 's'); }//sabes falta documentacion y comentariado????, es UTIL....asi nos entendemos //los prospectos de ingenieros!!!! void main() { clrscr(); menu(); } //ciao y suerte mas ayuda //bueno se sale, intenta de nuevo... la idea no es hacer las cosas de los //demas si no ense¤ar a hacerlas!!!! Oscar Ortiz--BOGOTA / COLOMBIA |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 16/10/2004 6:32 pm | | | Título: |
| gracias a todos! estaba bien , lo que faltaba era poner los & en los scanf y arreglar la condicion while, en ves de poner letra=='s' debia poner letra !='s' y con eso funcionaba... tambien arreglar un poco las condiciones del caso 'c' del switch para que no saliera numeros negativos cuando no habia dinero y quedaba listo.  gracias a todos por ayudarme, nos vemos! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |