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

Hola que tal, estoy programando una calculadora como para empezar con este lenguaje. El menu de opciones lo estoy haciendo con un do while y luego con switch tengo un menu de opciones del 1 al 9 dentro del do while, mi problema es que necesito que al ingresar el primer numero, el menu ser cargue con el valor que ingrese como por ejemplo
1-Ingrese un numero (X)
Cuando ingreso un numero por ejemplo 5 el menu deberia iterar otra vez con el nuevo numero quedando asi
1-Ingrese un numero (5)
No se me ocurre como hacer esto, si necesitan algo más no duden en preguntarme.

ivancea96

Intuyo que lo que quieres es editar lo que ya hay escrito en la consola.
Si es así, y si estás empezando en el lenguaje, te diría que pases de esto. Es más "problemático" de lo que parece.
Sinceramente, pasa de esto. Tendrás que usar una librería o la API del sistema operativo (librería windows.h en caso de windows) para hacerlo.
Si igualmente quieres hacerlo, aquí el primer comentario ya pone un código para hacerlo: https://stackoverflow.com/questions/27337481/how-to-change-a-character-in-c-console-that-was-printed-to-the-screen-earlier

Xtrangr

Cita de: ivancea96 en  2 Septiembre 2017, 01:41 AM
Intuyo que lo que quieres es editar lo que ya hay escrito en la consola.
Si es así, y si estás empezando en el lenguaje, te diría que pases de esto. Es más "problemático" de lo que parece.
Sinceramente, pasa de esto. Tendrás que usar una librería o la API del sistema operativo (librería windows.h en caso de windows) para hacerlo.
Si igualmente quieres hacerlo, aquí el primer comentario ya pone un código para hacerlo: https://stackoverflow.com/questions/27337481/how-to-change-a-character-in-c-console-that-was-printed-to-the-screen-earlier
Me falto aclarar que estoy programando en C, ese codigo tambien funciona en c?
y puede ser que con un flag? se pueda hacer porque creo que vi por ahi, pero no termine de entender

ivancea96

El código de la respuesta, sí, sirve en C. Incluyendo la librería <windows.h>

Tendrás que explicar lo de hacerlo con una "flag". Eso es un concepto genérico que no dice mucho en este caso.

Xtrangr

Cita de: ivancea96 en  2 Septiembre 2017, 01:57 AM
El código de la respuesta, sí, sirve en C. Incluyendo la librería <windows.h>

Tendrás que explicar lo de hacerlo con una "flag". Eso es un concepto genérico que no dice mucho en este caso.
Algo asi como poner un if y una bandera. Si se ingreso el numero a entra al if y cambias a por %d, me dijeron eso pero no lo entiendo.

ivancea96

Mm haz una cosa. Escríbeme qué es lo que quieres que ocurra exactamente. El mensaje con el número "(5)", quieres que aparezca después de escribir el número, debajo, o quieres que reemplace el número de arriba?

1-Ingrese un numero (X)
5
1-Ingrese un numero (5)
...

A esto último es a lo que supongo que se refiere el que te dijo eso.

Xtrangr

Compilo el programa sale esto en la consola(obviando todas las variables y demas para no confundirte más):
                 printf("1- Ingresar primer numero (A)\n");
        printf("2- Ingresar segundo operando (B)\n");
        printf("3- Calcular la suma (A+B)\n");
        printf("4- Calcular la resta (A-B)\n");
        printf("5- Calcular la division (A/B)\n");
        printf("6- Calcular la multiplicacion (A*B)\n");
        printf("7- Calcular el factorial (A!)\n");
        printf("8- Calcular todas las operacione\n");
        printf("9- Salir\n");

        scanf("%d",&opcion);



Escribo 1 así eligo la opcion numero 1 que es la de ingresar el primer número, luego escribo un 5.
Ahora lo que quiero que haga el programa es que me vuelva a aparecer el menu pero que en vez de que salga "1- Ingresar primer numero (A)" salga "1- Ingresar primer numero (5)" en la consola, y asi con las demas opciones cuando las seleccione

ivancea96

Uhm. Tienes varias maneras.
La primera es la que supongo que te comentaron. A la hora de mostrar el menú:

Código (cpp) [Seleccionar]
if(numeroAIngresado){
    printf("Ingresar numero (%i)", numeroA);
}else{
    printf("Ingresar numero (A)");
}


Otra opción, para hacerlo más automático, sería:
Código (cpp) [Seleccionar]
char stringNumeroA[20];
stringNumeroA[0] = 'A'; // Por defecto
stringNumeroA[1] = '\0';

printf("Ingresar numero (%d)", stringNumeroA);

//...

// Cuando se ha ingresado A
sprintf(stringNumeroA, "%d", numeroA); // Guardamos el nuevo valor en la string

Xtrangr

Lo siento es que no pude deducir lo que hiciste, me harias un gran favor si lo puedes editar tu y si deseas explicarme como funciona intente copiarlo sin saber como funciona pero no me salio
int main()
{
    char seguir='s';
    int opcion=0;
    float num1;
    float num2;
    float rta;

    do
    {
        printf("1- Ingresar 1er operando (A)\n");
        printf("2- Ingresar 2do operando (B)\n");
        printf("3- Calcular la suma (A+B)\n");
        printf("4- Calcular la resta (A-B)\n");
        printf("5- Salir\n");

        scanf("%d",&opcion);

        switch(opcion)
        {
            case 1:
                printf("Ingrese el primer numero: \n");//Esto ni los demas ya no irian ya que el numero que ingreso se escribe en el mismo menu
                scanf("%f" , &num1);
                break;
            case 2:
                printf("Ingrese el segundo numero: \n");
                scanf("%f" , &num2);
                break;
            case 3:
                rta=suma( num1 , num2);
                printf("La suma es %f\n" , rta);
                break;
            case 4:
                rta=resta(num1 , num2);
                printf("La resta es %f\n" , rta);
                break;
            case 5:
                seguir = 'n';
                break;


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

ivancea96

Olvídate de la segunda forma que puse.

La primera, no es más que un if. Cambias los printf que tienes por ese if. Pruebalo con el primer printf primero.

Lo único que no tienes en tu código es la variable "numeroAIngresado". Eso solo es un bool que indica, si es true, que ya se ingresó A. Basta que inicialices esa variable a false y que la pongas a true cuando haya ingresado A. El resto, está en el código que puse.