-3

What statement should I put in a case if I want it to go back to the previous menu? For example:

int main()
{
int nNum;
int nNum2;
int nNum3, nInTime, nOutTime, nTimeDiff, nNum4, nNum5 nOvertimeHours;
float fBaseSalary;
printf("1-Regular Weekly Salary Computation \n2-Cutomized Salary Computation \n3 -Exit \n\nEnter number: ");
scanf("%d",&nNum);

switch(nNum)
{
    case 1:
        printf("\nYou have selected Regular Salary Computation!\nDetails:\nDaily Rate:500\nDay Type:Normal\nIn Time:900\nOut Time:900\nNumber of Work Days:5\nWeekly Salary:2500");
        break;
    case 2:
        printf("\nYou have selected Cutomized Salary Computation!\n\nPlease enter number to choose corresponding details:");
        printf("\n\nType of Day:\n1-Overtime \n2-Regular Work hours\n\nPlease select number: ");
        scanf("%d", &nNum2);
        printf("IN time:");
        scanf("%d", &nInTime);
        printf("OUT time:");
        scanf("%d", &nOutTime);
        printf("Base Salary:");
        scanf("%f", &fBaseSalary);
        nTimeDiff = nOutTime - nInTime;
        switch(nNum2)
        {
            case 1:
                if(nTimeDiff > 800)
                {   printf("\n1-Non-night shift overtime\n2-Night shift overtime\nPlease select number:");
                    scanf("%d",&nNum3);
                    switch(nNum3)
                        {
                            case 1:
                                printf("1-Normal Day\n2-Rest Day\n3-Special Non-Working Day\n4-Special Non-Working Day and Rest Day\n5-Regular Holiday\n6-Regular Holiday and Rest Day\nSelect Number:");
                                scanf("%d", &nNum4);
                                switch(nNum4)
                                {
                                    case 1:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Normal Day with Overtime\n");
                                        printf("Salary of the Day                   |%f", getNormalDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime));
                                        break;
                                    case 2:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Rest Day with Overtime\n");
                                        printf("Salary of the Day                   |%f", getRestDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime));
                                        break;
                                    case 3:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Special Non-Working Holiday with Overtime\n");
                                        printf("Salary of the Day                   |%f", getSpecialNonWorkingDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime));
                                        break;
                                    case 4:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Special Non-Working and Rest Day with Overtime\n");
                                        printf("Salary of the Day                   |%f", getSpecialNonWorkingAndRestDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime));
                                        break;
                                    case 5:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Regular Holiday with Overtime\n");
                                        printf("Salary of the Day                   |%f", getRegularHoliDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime));
                                        break;
                                    case 6:
                                        printf("Base Salary                         | %f\n", fBaseSalary);
                                        nOvertimeHours = (nTimeDiff - 800 ) / 100;
                                        printf("Overtime Hours(Night Shift OT Hours)| %d(0)\n", nOvertimeHours);
                                        printf("IN Time                  | %d\n", nInTime);
                                        printf("OUT Time                 | %d\n", nOutTime);
                                        printf("Day Type                            |Regular Holiday and Rest Day with Overtime\n");
                                        printf("Salary of the Day                   |%f",  getRegularHolidayAndRestDayNonNightShiftOT(fBaseSalary, nOutTime, nInTime)); 
                                        break;
                                }
                        }
                }
                else if(nTimeDiff <= 800)
                    {
                    printf("Work hours did not exceed 8 hours. Overtime computation invalid.");
                    return 0;
                    }       
        }   case 2:
                if(nInTime => 2200 || nIntime <=0600 || nOutTime => 2200 || nOutTime <= 600)
                printf("1-Normal Day\n2-Rest Day\n3-Special Non-Working Day\n4-Special Non-Working Day and Rest Day\n5-Regular Holiday\n6-Regular Holiday and Rest Day\nSelect Number:");
                scanf("%d", &nNum5);
                switch(nNum5)
                    case 1:
   }
return 0;
}

Im still working on it, but I intend to put an additional case in every switch which will enable the user to go back to the previous switch statement. For example, pressing 3 would bring back the user to the previous menu if he/she pressed the wrong button in the first place and chose the wrong option

2 Answers2

0

You can use goto statement.

switch(num1)
switchnum1:
    case 1:
        printf("Haha");
    case 2:
        switch(num2)
             case 1:
                 printf("hoho");
             case 2:
             //go back to the previous switch
             goto switchnum1;

But, this will cause endless loop unless in goto path, num1 is modified. If you want num1 == num2, then all cases will have if (num1 == num2) goto switchnum1; goto can solve it depending on what you are trying to program but goto is not recommended as good programming practice.

anand
  • 163
  • 7
0

You can do it by many ways. Firstly, grab some basic .

#include <stdio.h>

int Menu()
{
    int i;
    printf("MENU\n\n");
    printf("1 - ...\n");
    printf("2 - ...\n");
    printf("3 - ...\n");
    printf("4 - ...\n");
    printf("5 - ...\n\n");
    printf("Choose: ");
    scanf("%d",&i);
    printf("\n\n");
    return i;
}
int main()
{
    int end = 0;
    while(end!=1)
    {
        int op;
        system("CLS");
        op = Menu();
        switch(op)
        {
        case 1:
        //  funct1();
            break;
        case 2:
        //  funct2();
            break;
        case 3:
        //  funct3();
            break;
        case 4:
        //  funct4();
            break;
        case 5: // This is the option to quit the program
            end = 1;
            break;
        default:
            printf("ERRO: Opcao invalida.\n\n");
            system("PAUSE");
            break;
        }
    }
    return 0;
}