Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Menu Driven Program to convert MKS to CGS and CGS to MKS

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Prerequisite: Switch Case in C/C++
Problem Statement: 
Write a menu-driven program using the Switch case to convert the CGS system to MKS system and vice versa.
Approach: 
MKS(Meter-Kilogram-Second) System: The MKS System of units refers to the physical measurement system in which the Dimensions length, weight and time are measured in Meters, Kilograms and Seconds respectively.
 

MKS System:

Length - meters (m)
Weight - kilograms (kg)
Time - seconds (s)

CGS(Centimeter-Gram-Second) System: The CGS System of units refers to the physical measurement system in which the Dimensions length, weight and time are measured in Centimeters, Grams and Seconds respectively.
 

CGS System:

Length - centimeters (cm)
Weight - grams (g)
Time - seconds (s)

How to convert MKS to CGS? 
In order to convert the MKS system to the CGS system, the conversion is done as follows:
 

For Length:
Since, 
    1 meter = 100 centimeter
Therefore, 
    multiply the given length value by 100.

For Weight:
Since, 
    1 kilogram = 1000 gram
Therefore, 
    multiply the given weight value by 1000.

For Time:
Since, 
    1 second = 1 second
Therefore, 
    The time value will remain the same.

How to convert CGS to MKS? 
Inorder to convert the CGS system to MKS system, the conversion is done as follows:
 

For Length:
Since, 
    1 centimeter = 1/100 met
Therefore, 
    divide the given length value by 100.

For Weight:
Since, 
    1 gram = 1/1000 kilogram
Therefore, 
    divide the given weight value by 1000.

For Time:
Since, 
    1 second = 1 second
Therefore, 
    The time value will remain the same.

Below is the implementation of the above approach:
Program: 
 

CPP




// C++ menu-driven program using the Switch case
// to convert the CGS system to MKS system
// and vice versa
 
#include <iostream>
using namespace std;
 
// declare mks class pre-hand for reference
// to mks class for friend function in cgs.
class mks;
 
class cgs {
 
private:
    // cgs units: centimeter, gram, second.
    //(length, weight, time)
    float cm, gm, sec;
 
public:
    // Default constructor
    cgs()
    {
        cm = 0;
        gm = 0;
        sec = 0;
    }
 
    // Parameterized constructor
    cgs(float x, float y, float z)
    {
        cm = x;
        gm = y;
        sec = z;
    }
 
    void disp_cgs()
    {
        cout << cm << "\t" << gm
             << "\t" << sec << "\n";
    }
 
    void disp_cgs1()
    {
        cout << cm;
    }
 
    void disp_cgs2()
    {
        cout << gm;
    }
 
    void disp_cgs3()
    {
        cout << sec;
    }
 
    // friend functions:
    friend mks cgs2mks(cgs);
    friend cgs mks2cgs(mks);
};
 
class mks {
 
private:
    // mks units: meter, kilogram, second.
    //(length, weight, time)
    float m, kg, sec;
 
public:
    // Default constructor
    mks()
    {
        m = 0;
        kg = 0;
        sec = 0;
    }
 
    // Parameterized constructor
    mks(float x, float y, float z)
    {
        m = x;
        kg = y;
        sec = z;
    }
 
    void disp_mks()
    {
        cout << m << "\t" << kg
             << "\t" << sec << "\n";
    }
 
    void disp_mks1()
    {
        cout << m;
    }
 
    void disp_mks2()
    {
        cout << kg;
    }
 
    void disp_mks3()
    {
        cout << sec;
    }
 
    friend mks cgs2mks(cgs);
    friend cgs mks2cgs(mks);
};
 
// mks->cgs conversion:
mks cgs2mks(cgs c)
{
    mks t;
    t.m = c.cm / 100;
    t.kg = c.gm / 1000;
    t.sec = c.sec;
    return t;
}
 
// cgs->mks conversion:
cgs mks2cgs(mks d)
{
    cgs t;
    t.cm = d.m * 100;
    t.gm = d.kg * 1000;
    t.sec = d.sec;
    return t;
}
 
// Code for menu
void menu(int mainMenuChoice, int parameterChoice)
{
    float distanceValue = 30, weightValue = 300, timeValue = 3000;
    int continueChoice = 0;
 
    cout << "MKS <-> CGS converter menu:\n";
    do {
        cout << "Enter 1 for CGS to MKS conversion.\n"
             << "Enter 2 for MKS to CGS conversion.\n";
 
        cout << "\nYou have chosen: "
             << mainMenuChoice
             << "\n\n";
 
        switch (mainMenuChoice) {
 
        case 1: {
            cout << "Enter 0 to convert all three parameters"
                 << "- distance, weight and time.\n"
                 << "Enter 1 for converting distance\n"
                 << "Enter 2 for converting weight\n"
                 << "Enter 3 for converting time\n";
 
            cout << "\nYou have chosen: "
                 << parameterChoice
                 << "\n\n";
 
            switch (parameterChoice) {
            case 0: {
                cout << "Enter values for distance unit in centimeter.\n";
                distanceValue;
                cout << endl;
                cout << "Enter values for weight unit in grams.\n";
                weightValue;
                cout << endl;
                cout << "Enter values for time unit in seconds.\n";
                timeValue;
                cout << endl;
 
                cout << "The entered values in CGS system are: \n";
                cgs c(distanceValue, weightValue, timeValue);
 
                c.disp_cgs();
 
                cout << "Corresponding values in MKS system: \n";
                mks m = cgs2mks(c);
 
                m.disp_mks();
 
                cout << endl;
                break;
            }
 
            case 1: {
 
                cout << "Enter values for distance unit in centimeter.\n";
                distanceValue;
                cout << endl;
 
                cout << "The entered values in CGS system are: \n";
                cgs c(distanceValue, 0, 0);
 
                c.disp_cgs();
 
                cout << "Corresponding values in MKS system: \n";
                mks m = cgs2mks(c);
 
                m.disp_mks();
 
                cout << endl;
                break;
            }
            case 2: {
 
                cout << "Enter values for weight unit in grams.\n";
                weightValue;
                cout << endl;
 
                cout << "The entered values in CGS system are: \n";
                cgs c(0, weightValue, 0);
 
                c.disp_cgs();
 
                cout << "Corresponding values in MKS system: \n";
                mks m = cgs2mks(c);
 
                m.disp_mks();
 
                cout << endl;
                break;
            }
            case 3: {
 
                cout << "Enter values for time unit in seconds.\n";
                timeValue;
                cout << endl;
 
                cout << "The entered values in CGS system are: \n";
                cgs c(0, 0, timeValue);
 
                c.disp_cgs();
 
                cout << "Corresponding values in MKS system: \n";
                mks m = cgs2mks(c);
 
                m.disp_mks();
 
                cout << endl;
                break;
            }
            }
            break;
        }
 
        case 2: {
            cout << "Enter 0 to convert all three parameters"
                 << "- distance, weight and time.\n"
                 << "Enter 1 for converting distance\n"
                 << "Enter 2 for converting weight\n"
                 << "Enter 3 for converting time\n";
 
            cout << "\nYou have chosen: "
                 << parameterChoice
                 << "\n\n";
 
            switch (parameterChoice) {
            case 0: {
                cout << "Enter values for distance unit in meter.\n";
                distanceValue;
                cout << endl;
                cout << "Enter values for weight unit in kilogram.\n";
                weightValue;
                cout << endl;
                cout << "Enter values for time unit in second.\n";
                timeValue;
                cout << endl;
 
                cout << "The entered values in MKS system are: \n";
                mks m(distanceValue, weightValue, timeValue);
 
                m.disp_mks();
 
                cout << "Corresponding values in CGS system: \n";
                cgs c = mks2cgs(m);
 
                c.disp_cgs();
 
                cout << endl;
                break;
            }
 
            case 1: {
                cout << "Enter values for distance unit in meter.\n";
                distanceValue;
                cout << endl;
 
                cout << "The entered values in MKS system are: \n";
                mks m(distanceValue, 0, 0);
 
                m.disp_mks();
 
                cout << "Corresponding values in CGS system: \n";
                cgs c = mks2cgs(m);
 
                c.disp_cgs();
 
                cout << endl;
                break;
            }
 
            case 2: {
 
                cout << "Enter values for weight unit in kilogram.\n";
                weightValue;
                cout << endl;
 
                cout << "The entered values in MKS system are: \n";
                mks m(0, weightValue, 0);
 
                m.disp_mks();
 
                cout << "Corresponding values in CGS system: \n";
                cgs c = mks2cgs(m);
 
                c.disp_cgs();
 
                cout << endl;
                break;
            }
 
            case 3: {
 
                cout << "Enter values for time unit in second.\n";
                timeValue;
                cout << endl;
 
                cout << "The entered values in MKS system are: \n";
                mks m(0, 0, timeValue);
 
                m.disp_mks();
 
                cout << "Corresponding values in CGS system: \n";
                cgs c = mks2cgs(m);
 
                c.disp_cgs();
 
                cout << endl;
                break;
            }
            }
        }
        }
        cout << "Enter 1 to continue, or\n"
             << "Press any other key to exit.\n";
 
    } while (continueChoice == 1);
}
 
// Driver code
int main()
{
 
    cout << "Check for CGS to MKS of all units.\n\n";
    menu(1, 0);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for CGS to MKS of only distance unit.\n\n";
    menu(1, 1);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for CGS to MKS of only weight unit.\n\n";
    menu(1, 2);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for CGS to MKS of only time unit.\n\n";
    menu(1, 3);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "Check for MKS to CGS of all units.\n\n";
    menu(2, 0);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for MKS to CGS of only distance unit.\n\n";
    menu(2, 1);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for MKS to CGS of only weight unit.\n\n";
    menu(2, 2);
 
    cout << "\n-------------------------------------------------\n";
 
    cout << "\nCheck for MKS to CGS of only time unit.\n\n";
    menu(2, 3);
 
    cout << "\n-------------------------------------------------\n";
 
    return 0;
}


Output

Check for CGS to MKS of all units.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 1

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 0

Enter values for distance unit in centimeter.

Enter values for weight unit in grams.

Enter values for time unit in seconds.

The entered values in CGS system are: 
30    300    3000
Corresponding values in MKS system: 
0.3    0.3    3000

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for CGS to MKS of only distance unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 1

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 1

Enter values for distance unit in centimeter.

The entered values in CGS system are: 
30    0    0
Corresponding values in MKS system: 
0.3    0    0

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for CGS to MKS of only weight unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 1

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 2

Enter values for weight unit in grams.

The entered values in CGS system are: 
0    300    0
Corresponding values in MKS system: 
0    0.3    0

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for CGS to MKS of only time unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 1

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 3

Enter values for time unit in seconds.

The entered values in CGS system are: 
0    0    3000
Corresponding values in MKS system: 
0    0    3000

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------
Check for MKS to CGS of all units.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 2

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 0

Enter values for distance unit in meter.

Enter values for weight unit in kilogram.

Enter values for time unit in second.

The entered values in MKS system are: 
30    300    3000
Corresponding values in CGS system: 
3000    300000    3000

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for MKS to CGS of only distance unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 2

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 1

Enter values for distance unit in meter.

The entered values in MKS system are: 
30    0    0
Corresponding values in CGS system: 
3000    0    0

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for MKS to CGS of only weight unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 2

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 2

Enter values for weight unit in kilogram.

The entered values in MKS system are: 
0    300    0
Corresponding values in CGS system: 
0    300000    0

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

Check for MKS to CGS of only time unit.

MKS <-> CGS converter menu:
Enter 1 for CGS to MKS conversion.
Enter 2 for MKS to CGS conversion.

You have chosen: 2

Enter 0 to convert all three parameters- distance, weight and time.
Enter 1 for converting distance
Enter 2 for converting weight
Enter 3 for converting time

You have chosen: 3

Enter values for time unit in second.

The entered values in MKS system are: 
0    0    3000
Corresponding values in CGS system: 
0    0    3000

Enter 1 to continue, or
Press any other key to exit.

-------------------------------------------------

My Personal Notes arrow_drop_up
Last Updated : 29 May, 2021
Like Article
Save Article
Similar Reads