Soy nuevo en el lenguaje de programación C. Quiero que el siguiente código se repita en el menú principal después de "Transacción exitosa" y también almacene un nuevo saldo después de ingresar una cantidad. Aqui esta el codigo

#include<stdio.h>
int main()
{
    int mainmenu, amt, balance = 0;
    printf("1.Pay \n");
    printf("2.Balance \n");
    printf("3.Transaction history \n");
    scanf("%d",&mainmenu);

    if(mainmenu == 1){
        printf("Select Amount \n");
        printf("$0.50 \n");
        printf("$1.00 \n");
        printf("$1.50 \n");
        printf("$2.00 \n");
        scanf("%d",&amt);

        if(amt == 1){
            balance = balance + 0.5;
            printf("Transaction Successful \n");

        }
        if(amt == 2){
             balance = balance + 1;
            printf("Transaction Successful \n");
        }
        if(amt == 3){
             balance = balance + 1.5;
            printf("Transaction Successful \n");
        }
        if(amt == 4){
             balance = balance + 2;
            printf("Transaction Successful \n");
        }

    }
    if(mainmenu == 2){
        printf("\n");
        printf("Balance = %d",balance,"\n");
    }
    if(mainmenu == 3){
        printf("No Transaction History At The Moment");
    }

}
1
DwayneTino 16 feb. 2018 a las 22:46

2 respuestas

La mejor respuesta

Hay dos métodos diferentes que puede utilizar. Un bucle while o un bucle for.

La sintaxis de ambos es así:

while(condition) {
   statement(s); // execute this section of code until the condition is met
}

Y

for (initilization; condition; increment){
    statement(s); // execute this section of code until the condition is met
}

Si desea un bucle infinito, puede usar TRUE como condición en el bucle while como:

while(TRUE) {
   statement(s); // execute this section of code indefinitely
}

O puede dejar los parámetros vacíos en el ciclo for así:

for( ; ; ){
    statement(s); // execute this section of code indefinitely
}

En su caso, se vería así:

#include<stdio.h>
int main()
{
    int mainmenu, amt, balance = 0;

    while(TRUE){
        printf("1.Pay \n");
        printf("2.Balance \n");
        printf("3.Transaction history \n");
        scanf("%d",&mainmenu);

        if(mainmenu == 1){
            printf("Select Amount \n");
            printf("$0.50 \n");
            printf("$1.00 \n");
            printf("$1.50 \n");
            printf("$2.00 \n");
            scanf("%d",&amt);

            if(amt == 1){
                balance = balance + 0.5;
                printf("Transaction Successful \n");

            }
            if(amt == 2){
                 balance = balance + 1;
                printf("Transaction Successful \n");
            }
            if(amt == 3){
                 balance = balance + 1.5;
                printf("Transaction Successful \n");
            }
            if(amt == 4){
                 balance = balance + 2;
                printf("Transaction Successful \n");
            }

        }
        if(mainmenu == 2){
            printf("\n");
            printf("Balance = %d",balance,"\n");
        }
        if(mainmenu == 3){
            printf("No Transaction History At The Moment");
        }

    }
}

O:

#include<stdio.h>
int main()
{
    int mainmenu, amt, balance = 0;

    for( ; ; ){
        printf("1.Pay \n");
        printf("2.Balance \n");
        printf("3.Transaction history \n");
        scanf("%d",&mainmenu);

        if(mainmenu == 1){
            printf("Select Amount \n");
            printf("$0.50 \n");
            printf("$1.00 \n");
            printf("$1.50 \n");
            printf("$2.00 \n");
            scanf("%d",&amt);

            if(amt == 1){
                balance = balance + 0.5;
                printf("Transaction Successful \n");

            }
            if(amt == 2){
                 balance = balance + 1;
                printf("Transaction Successful \n");
            }
            if(amt == 3){
                 balance = balance + 1.5;
                printf("Transaction Successful \n");
            }
            if(amt == 4){
                 balance = balance + 2;
                printf("Transaction Successful \n");
            }

        }
        if(mainmenu == 2){
            printf("\n");
            printf("Balance = %d",balance,"\n");
        }
        if(mainmenu == 3){
            printf("No Transaction History At The Moment");
        }

    }
}
-1
Invisible Hippo 16 feb. 2018 a las 20:01

La forma más sencilla es probablemente usar un ciclo while en este caso.

while(1){
  //mainmenu here
  printf("4. Exit Program");
  scanf("%d", &mainmenu);

  //if statements/functions here
}

Esto requeriría que agregue una cuarta opción para salir del ciclo while, para que no se ejecute sin cesar (también podría usar otros métodos para saber cuándo salir). Un buen aspecto de esto es que si accidentalmente ingresan algo no válido como 5 o 7, no causa ningún error, sino que simplemente ejecuta el ciclo nuevamente.

Tenga en cuenta que tendría que poner todas sus sentencias if dentro del ciclo while, o ponerlas en una función diferente y llamar a esa función después de obtener la entrada del usuario.

PD Las declaraciones de cambio no relacionadas pero probablemente serían un poco más fáciles que las declaraciones de otro tipo aquí. No son necesarios, pero podrían facilitarle un poco la vida.

0
Matthew Kerian 16 feb. 2018 a las 21:31