Home > OS >  Creating a switch case control instruction
Creating a switch case control instruction

Time:10-11

Here's the code

Write a code to find grade of a student based on the marks obtained by him and as the system given below,

1. 90-100-->A
2. 80-90-->B
3. 70-80-->C
4. 60-70-->D
5. <60-->E
#include <stdio.h>


int main(){
    int marks;

    printf("Enter your marks(1-100)\n");

    scanf("%d\n", &marks);

    switch (marks)
    {
    case 1:
        printf("Your Grade is A\n");
        break;

    case 2:
        printf("Your Grade is B\n");
        break;

    case 3:
        printf("Your Grade is C\n");
        break;

    case 4:
        printf("Your Grade is D\n");
        break;

    case 5:
        printf("Your Grade is E\n");
        break;
    }
    return 0;
}

CodePudding user response:

You need to transform marks in a number in the range [1, 5]. This can be done for example using an array.

Here is a demonstration program.

#include <stdio.h>

int main(void) 
{
    unsigned int marks = 0;

    printf( "Enter your marks(1-100): " );
    scanf( "%u", &marks );
    
    unsigned int grades[] = { 0, 60, 70, 80, 90 };

    const size_t N = sizeof( grades ) / sizeof( *grades );

    size_t i = 0;

    while ( i != N && marks < grades[N -   i] );

    switch ( i )
    {
    case 1:
        puts( "Your Grade is A" );
        break;

    case 2:
        puts( "Your Grade is B" );
        break;

    case 3:
        puts( "Your Grade is C" );
        break;

    case 4:
        puts( "Your Grade is D" );
        break;

    case 5:
        puts( "Your Grade is E" );
        break;
    }

    return 0;
}

CodePudding user response:

#include <stdio.h>
  
int main(){
   int marks;
    
   printf("Enter your marks between 0 to 100\n");
   scanf("%d", &marks);
    
   switch(marks/10){
       case 10 :
       case 9 :
           /* Marks between 90-100 */
           printf("Your Grade : A\n" );
           break;
       case 8 :
       case 7 :
           /* Marks between 70-89 */
           printf("Your Grade : B\n" );
           break;
       case 6 :
           /* Marks between 60-69 */
           printf("Your Grade : C\n" );
           break;
       case 5 :
       case 4 :
           /* Marks between 40-59 */
           printf("Your Grade : D\n" );
           break;
       default :
           /* Marks less than 40 */
           printf("You failed\n" );
   }
 
   return 0;
}```



to find use switch(marks/10) in the switch statement 
if your score is 80 then 80/10 so it will jump to case 8.

CodePudding user response:

Let's ignore error handling and range trapping for this answer!

Given the mapping, you could just do an integer division

int grade = marks / 10;

Then switch on grade and case accordingly (9,8,7,6, default)

int main(){ int marks;

printf("Enter your marks(1-100)\n");
scanf("%d\n", &marks);

int grade = marks / 10;

switch ( grade )
{
    case 10:
    case  9: { printf( "Your Grade is A\n" ); break; }
    case  8: { printf( "Your Grade is B\n" ); break; }
    case  7: { printf( "Your Grade is C\n" ); break; }
    case  6: { printf( "Your Grade is D\n" ); break; }
    default: { printf( "Your Grade is E\n" ); break; }
}

Note: There are compilers that support a language extension allowing ranges (eg) case 90 ... 100: but these are non-standard so should not be encouraged .

For ranges, in C, you will normally need to do an if-elseif-else ladder.

if      ( marks > 100 ) { printf( "You cheated\n"     ); }
else if ( marks > 90  ) { printf( "Your Grade is A\n" ); }
else if ( marks > 80  ) { printf( "Your Grade is B\n" ); }
else if ( marks > 70  ) { printf( "Your Grade is C\n" ); }
else if ( marks > 60  ) { printf( "Your Grade is D\n" ); }
else /*   marks < 60 */ { printf( "Your Grade is E\n" ); }
  • Related