Duda con menu de opciones

Iniciado por Xtrangr, 2 Septiembre 2017, 01:22 AM

0 Miembros y 3 Visitantes están viendo este tema.

Xtrangr

#10
Lo hice asi pero esta mal, no se en que me estoy equivocando
int main()
{
   char seguir='s';
   int opcion=0;
   float num1;
   float rta;
   int numeroAIngresado=0;

   do
   {
       if(numeroAIngresado)
       {
       printf("1- Ingresar 1er operando (%f)\n", num1);
       numeroAIngresado=1;
       }
       else
       {
       printf("1- Ingresar 1er operando (A)\n");
       }
       printf("2- Salir\n");

       scanf("%d",&opcion);

       switch(opcion)
       {
           case 1:
               printf("Ingrese el primer numero: \n");
               scanf("%f" , &num1);
               break;

       }
       }while(seguir=='s');
   return 0;

ivancea96

:o
numeroAInresado es una flag. ¿Cuándo la pones a 1? Pues cuando se ingrese el numero. ¿Después de qué línea "num1" tiene valor?

Xtrangr

Entonces la bandera tiene que ir en el case 1?

ivancea96

Ahí la pones a 1. Ahí es donde el número ah sido ingresado, ¿no? El nombre de las variables representa qué es lo que significa. Si quieres que esa variable signifique "si el número ha sido ingresado o no", haz que sea cierto.

Xtrangr

num1 tiene valor en el case 1 de ahi quiero que ese valor se cargue en el menu, entonces tendria que hacer el flag en case 1
  case 1:
                scanf("%f" , &num1);
                if(numeroAIngresado)
                {
                printf("1- Ingresar 1er operando (%f)\n", num1);
                numeroAIngresado=1;
                }
                else
                {
                printf("1- Ingresar 1er operando (A)\n");
                }
                break;


No logro entender si numeroAIngresado=0, entra en el if y luego el string pasa a mostrar el valor luego cambio el valor a 1 ..... No entiendo

ivancea96

Cita de: Xtrangr en  2 Septiembre 2017, 23:27 PM
Entonces la bandera tiene que ir en el case 1?
Poner la bandera a 1 en el case. Eso y nada más, solo el numeroAIngresado=1;. Es eso lo que estás indicando: que el número ha sido ingresado.
El resto, donde estaba.

Xtrangr

Perdón pero no lo logro entender, si me ayudas escribiendolo tu creo que se me armaria el puzzle que tengo ahora en mi cabeza

ivancea96

Lo tenías hacho. Copio tu código:
int main()
{
    char seguir='s';
    int opcion=0;
    float num1;
    float rta;
    int numeroAIngresado=0;

    do
    {
        if(numeroAIngresado)
        {
        printf("1- Ingresar 1er operando (%f)\n", num1);
        numeroAIngresado=1;
        }
        else
        {
        printf("1- Ingresar 1er operando (A)\n");
        }
        printf("2- Salir\n");

        scanf("%d",&opcion);

        switch(opcion)
        {
            case 1:
                printf("Ingrese el primer numero: \n");
                scanf("%f" , &num1);
                break;

        }
        }while(seguir=='s');
    return 0;
}


Cita de: ivancea96 en  2 Septiembre 2017, 23:03 PM
:o
numeroAInresado es una flag. ¿Cuándo la pones a 1? Pues cuando se ingrese el numero. ¿Después de qué línea "num1" tiene valor?

int main()
{
    char seguir='s';
    int opcion=0;
    float num1;
    float rta;
    int numeroAIngresado=0;

    do
    {
        if(numeroAIngresado)
        {
        printf("1- Ingresar 1er operando (%f)\n", num1);
        }
        else
        {
        printf("1- Ingresar 1er operando (A)\n");
        }
        printf("2- Salir\n");

        scanf("%d",&opcion);

        switch(opcion)
        {
            case 1:
                printf("Ingrese el primer numero: \n");
                scanf("%f" , &num1);
                numeroAIngresado=1;
                break;

        }
        }while(seguir=='s');
    return 0;
}

Xtrangr

Ahora entiendo todo, ahora me queda mucho más claro el concepto de flag muchas gracias por tu ayuda