!! Ayuda ¡¡ Programa en C

Iniciado por NeedToKill, 16 Julio 2010, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

Horricreu

#10
Cita de: Horricreu en 18 Julio 2010, 18:45 PM
El problema pasa porque scanf() ensucia el buffer, eso se arregla limpiandolo :P o usando alguna otra funcion que no lo ensucie...

Salu10.

Y también que el input sea un char.

Saludos :P

NeedToKill

#11
Bueno, me e demorado bastante con este programa pero en fin, esto es lo que tengo hasta el momento:


#include <stdio.h>
#include <stdlib.h>


int main(){
          int opcion;
          float monto_inicial,deposito,retiro_dinero,giro=1,monto=0;
         
          do{
             printf("       :: BIENVENIDO AL BANCO ::\n");
             printf("\n         //////Cuenta De Ahorro//////\n");
             printf("\n");
             printf("\t       1-. Activar Cuenta.\n");
             printf("\t       2-. Girar Dinero.\n");
             printf("\t       3-. Depositar Dinero.\n");
             printf("\t       4-. Consulta de Saldo.\n");
             printf("\t       5-. Salir.\n");
             printf("\n\t           Ingrese Opcion: ");
             scanf("%d", &opcion);
         
             switch (opcion) {
                             case 1:
                               
                                  system("cls");
                                  printf("       El Monto Inicial Debe Ser Igual o Superorior a $10.000\n\n");
                                  printf("       Ingrese Monto: $");
                                  scanf("%f",&monto_inicial);
                                  printf("\n");
                                  if(monto_inicial >= 10000){
                                                             monto = monto_inicial;
                                                             printf("       Su Cuenta a Sido Activada Exitosamente.\n\n");
                                                             printf("       usted cuenta con $%.0f",monto);
                                                             }
                                  else{
                                       printf("       El monto Minimo Para Realizar Esta Operacion Es De $10.000\n");
                                       }
                                  getch();
                                  system("cls");
                                  break;
                               
                             case 2:
                                  system("cls");
                                  printf("EL MONTO MINIMO PARA GIRAR ES DE $2.000 Y EL MAXIMO ES DE $200.000\n\n");
                                  if(giro<=6){
                                             giro=giro+1;
                                             printf("ingrese el monto que quiere retirar: $");
                                             scanf("%f",&retiro_dinero);
                                             if(monto>=retiro_dinero){
                                             if((retiro_dinero>=2000) && (retiro_dinero<=200000)){
                                                                      monto=monto-retiro_dinero;
                                                                      printf("usted a retirado: $%.0f",retiro_dinero);
                                                                      }
                                                                         else{
                                                  printf("el monto ingresado no esta permitido");
                                                  }                    
                                                                     
                                             }
                                             else{
                                                  printf("el monto ingresado no esta permitido");
                                                  }  
                                             }
                                  else{
                                       printf("solo se permiten como maximo 6 giros");
                                       }
                                  getch();
                                  system("cls");
                                  break;
                               
                             case 3:
                                  system("cls");
                                  printf("\tEL DEPOSITO DEVE SER MAYOR A $5000\n\n");
                                  printf("ingrese monto que desea depositar: $");
                                  scanf("%f",&deposito);
                                  if(deposito>=5000){
                                  monto=monto + deposito;
                                  printf("el estado actual de su cuenta es de: $%.0f",monto);
                                  }
                                  else{
                                       printf("\tmonto insuficiente para hacer un deposito");
                                       }
                                  getch();
                                  system("cls");
                                  break;
                             case 4:
                                  system("cls");
                                  printf("usted cuenta con: $%.0f",monto);
                                  getch();
                                  system("cls");
                                  break;
                                 
                             case 5:
                                  break;
                                       
                             default:
                                     printf("       Opcion Invalida");
                                     getch();
                                     system("cls");
                             }
             }while(opcion!=5);
             system("exit");
          }
                               
Esta casi listo solo me faltan dos puntos importantes que considerar, que son los siguientes:

1.- No se puede realizar las opciones 2,3 y 4 sin haber activado una cuenta.

2.- Si se activa la cuenta por segunda vez, el saldo y los giros realizados deben ser inicializados a cero.

Esto es lo que me a tenido toda la tarde complicado, si alguien me pudiera ayudar en esto lo antes posible por favor.

nicolas_cof

system("cls");

getch();

system("exit");

NeedToKill, seria bueno que revises varios de los comentarios anteriores que se hicieron en este post...

Cita de: NeedToKill en 19 Julio 2010, 05:31 AMEsta casi listo solo me faltan dos puntos importantes que considerar, que son los siguientes:

1.- No se puede realizar las opciones 2,3 y 4 sin haber activado una cuenta.

2.- Si se activa la cuenta por segunda vez, el saldo y los giros realizados deben ser inicializados a cero.

Podrias usar una variable donde llevas el estado de la activacion de cuenta

int cuentaActivada = 0; // inicializacion 0 (false)

Una vez activada le asignas el valor de 1 (true)

Con respecto a las opciones 2, 3 y 4 podrias hacer un if donde se compruebe que este activada

if ( cuentaActivada == 1 )
{
    ...
}


Obviamente que esto lo tendrias que hacer dentro de los labels del switch

Un poco rustica la idea pero valedera ;)

Salu10.

NeedToKill

Cita de: [NicolaS] en 19 Julio 2010, 05:46 AM
system("cls");

getch();

system("exit");

NeedToKill, seria bueno que revises varios de los comentarios anteriores que se hicieron en este post...

Cita de: NeedToKill en 19 Julio 2010, 05:31 AMEsta casi listo solo me faltan dos puntos importantes que considerar, que son los siguientes:

1.- No se puede realizar las opciones 2,3 y 4 sin haber activado una cuenta.

2.- Si se activa la cuenta por segunda vez, el saldo y los giros realizados deben ser inicializados a cero.

Podrias usar una variable donde llevas el estado de la activacion de cuenta

int cuentaActivada = 0; // inicializacion 0 (false)

Una vez activada le asignas el valor de 1 (true)

Con respecto a las opciones 2, 3 y 4 podrias hacer un if donde se compruebe que este activada

if ( cuentaActivada == 1 )
{
    ...
}


Obviamente que esto lo tendrias que hacer dentro de los labels del switch

Un poco rustica la idea pero valedera ;)

Salu10.

Dale men gracias, me sirvio bastante tu aporte, pero...
¿Como hago eso de que si la cuenta se activa por segunda vez se inicializen el SALDO y LOS GIROS?

Gallu

Hola NeedToKill , permiteme alguna observación , primero que nada t aconsejaría que agrupes el código en funciones por eje.


int activarCuenta();
int girarDinero();
int depositarDinero();


segundo , mejor si posteas tu código entre etiquetas GeSHI
tercero , para darle claridad al código , es muy recomendable agrupar las variables en extructuras , en tu caso yo usaría mínimo estas dos estructuras.

typedef struct{
    char *nombreCliente;
    int edad;
    char *dni;
    char *direccio;
}typeCliente;

typedef struct{
    long saldo;
    char *idCuenta;
    typeCliente *cliente;
}typeCuenta;

de esa manera cuando quieras crear una cuenta haces

    typeCliente cliente = (typeCliente) malloc(sizeof(typeCliente));
    typeCuenta cuenta = (typeCuenta) malloc(sizeof(typeCuenta)); 



luego asociar a cada cliente con cada cuenta será más sencillo , eje.

int  crearCliente(typeCliente cliente){
     //aqui inicializas los campos del cliente como el nombre , dire. etc
   }

int crearCuenta(typeCuenta cuenta, typeCliente cliente){
    //aqui creas la cuenta y la asocias al cliente dado
}


al final en el main solo tendrás que meter las llamadas a los procedimientos y listo


do{
              printf("       :: BIENVENIDO AL BANCO ::\n");
              printf("\n         //////Cuenta De Ahorro//////\n");
              printf("\n");
              printf("\t       1-. Activar Cuenta.\n");
              printf("\t       2-. Girar Dinero.\n");
              printf("\t       3-. Depositar Dinero.\n");
              printf("\t       4-. Consulta de Saldo.\n");
              printf("\t       5-. Salir.\n");
              printf("\n\t           Ingrese Opcion: ");
              scanf("%d", &opcion);
           
              switch (opcion) {
                         case 1:
                                    activarCuenta();
                                    break;
                         case 2:
                                    girarDinero();
                                    break;

etc........................




Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.