C - Switch with multiple case numbers

c, case, switch-statement

Solution

With GCC and Clang, you can use case ranges, like this:

switch (x){

case 1 ... 30:
    printf ("The number you entered is >= 1 and <= 30\n");
    break;
}

The only cross-compiler solution is to use case statements like this:

switch (x){

case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
    printf ("The number you entered is >= 1 and <= 6\n");
    break;
}

Edit: Using something to the effect of `switch (x / 10)` is another good way of doing this. It may be simpler to use GCC case ranges when the ranges aren't differences of `10`, but on the other hand your professor might not take a GCC extension as an answer.

Problem

So my professor asked us to create a switch statement. We are allowed to use only the "SWITCH" statement to do the program. He wants us to input a number and then display it if it is on the number range and what briefcase number will be taken as shown below. Now... I know that for this type of program it is easier to use the IF statement. Doing Case 1: Case 2: Case 3...Case 30 will work but will take too much time due to the number range. ``` #include <stdio.h> main() { int x; char ch1; printf("Enter a number: "); scanf("%d",&x); switch(x) { case 1://for the first case #1-30 case 30: printf("The number you entered is >= 1 and <= 30"); printf("\nTake Briefcase Number 1"); break; case 31://for the second case #31-59 case 59: printf("The number you entered is >= 31 and <= 59"); printf("\nTake Briefcase Number 2"); break; case 60://for the third case #60-89 case 89: printf("The number you entered is >= 60 and <= 89"); printf("\nTake Briefcase Number 3"); break; case 90://for the fourth case #90-100 case 100: printf("The number you entered is >= 90 and <= 100"); printf("\nTake Briefcase Number 4"); break; default: printf("Not in the number range"); break; } getch(); } ``` My professor told us that there is a shorter way on how to do this but won't tell us how. The only way I can think of shortening it is by using IF but we are not allowed to. Any Ideas on how I can make this work out?

Original source