Gerard G
Gerard G

Reputation: 3463

interactive menu with switch statement

Hi I'm trying to make an interactive menu with switch statement in C. Though I'm unsure of how to trigger a function that has certain arguments. I'm a total beginner and I'm stumped how to do this. The function in the switch statement needs the arguments though I would like the function to ask for the numbers. I'm doing this as an assignment and cannot provide the actual code so I made this mock up. Thank you for your help.

Here is an example of code I might use.

#include <stdio.h>

void printMenu()
{
    int choice;

    do
    {
        printf("Main Menu:\n");
        printf("1) do this\n");
        scanf("%d", &choice);

        switch (choice)
        {
            case 1:
                function(); /* though this needs the arguments */
                break;
        }
    } while (choice != 7);

    int main(void)
    {
        printMenu();
        return 0;
    }

    void function(int number1, float number2)
    {
        /*calculation*/
        printf("enter your numbers");
        /* Not sure how to read the numbers in here */
        printf("%d + %d = %d", number1, number2, number1 + number2);
        return;
    }

Upvotes: 0

Views: 12748

Answers (3)

ricdnts
ricdnts

Reputation: 11

#include <stdio.h>
#include <stdlib.h>

#define Pi 3.14159216

/*  
*small program of how to create a menu
*/

main ()
{
float degree,radians;
int input;
/*degrees to radians */
float degreesToRadians (float deg)
{
return ((Pi * deg) / 180.0);
}

/*radians to degrees*/
float radiansToDegrees (float rad)
{
 return rad * (180 / Pi);
}
void menu ()
{
 printf ("\n");
 printf ("1. degrees\n");
 printf ("2. radians\n");
 printf ("3. quit\n");
do
switch (input) {
case 1:
          printf ("\n");
          printf ("\n");

          printf (" Enter value of degrees: ");
          scanf ("%f", &degree);
          printf ("RADIANS = %f \n\n", degreesToRadians (degree));
          menu (); 
          break;

case 2:
          printf ("\n");
          printf ("\n");

          printf (" Enter value of radians: ");
          scanf ("%f", &radians);
          printf ("DEGREES = %f \n\n", radiansToDegrees (radians));
          menu (); 
          break;
case 3:
          printf (" quiting app \n");
          exit (0);
          break;
default:
      printf ("wrong option\n");
      break;
  }
while (input != 3);
    getchar ();   
   }
 }
menu ();
}

Upvotes: -1

Barath Ravikumar
Barath Ravikumar

Reputation: 5836

The function in the switch statement needs the arguments though I would like the function to ask for the numbers.

How about asking the arguments first , and then calling the function. This way the two arguments can be declared once and be used in other functions of the same switch , but be defined according to the chosen case.

void function1(int, float);

   void printMenu()
   {

     int choice = 0 , num1 = 0;
     float num2 = 0;

     do
      {
          printf("Main Menu:\n");
          printf("1) do this\n");
          scanf("%d", &choice);

          switch (choice)
          {
              case 1:
                  printf("\nEnter number 1\n");
                  scanf("%d",&num1);
                  printf("\nEnter number 2\n");
                  scanf("%f",&num2);
                  function1(num1,num2);
                  break;
          }
      } while (choice != 7);
    }

Upvotes: 1

AusCBloke
AusCBloke

Reputation: 18492

If you want the switch to be as minimal as possible then just call another function which takes in input and then calls the function...

case 1:
   read_input_and_function()
   break;

...

void read_input_and_function(void)
{
   printf("Enter your numbers: ");
   /* scanf number1, number2 */
   function(number1, number2);
}

Upvotes: 1

Related Questions