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:
// 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. -------------------------------------------------