static void Main(string[] args)
static char ReadLowerChar()
return char.ToLower(Console.ReadLine()[0]);
static double ReadDouble(string msg)
return double.Parse(Console.ReadLine());
Console.WriteLine("Main menu:");
Console.WriteLine("A. Area");
Console.WriteLine("P. Perimeter");
Console.WriteLine("V. Volume");
Console.WriteLine("X. Exit");
Console.Write("Choose: ");
char input = ReadLowerChar();
Console.WriteLine("Exited");
Console.WriteLine("Invalid input " + input);
Console.WriteLine("Area menu:");
Console.WriteLine("C. Circle");
Console.WriteLine("E. Eclipse");
Console.WriteLine("T. Trapezoid");
Console.WriteLine("M. Main Menu");
Console.Write("Choose: ");
char input = ReadLowerChar();
double area, a, b, h, radius;
radius = ReadDouble("Enter radius: ");
area = ComputeCircleArea(radius);
Console.WriteLine($"Circle Area: {area}");
a = ReadDouble("Enter side a: ");
b = ReadDouble("Enter side b: ");
area = ComputeEclipseArea(a, b);
Console.WriteLine($"Eclipse Area: {area}");
a = ReadDouble("Enter side a: ");
b = ReadDouble("Enter side b: ");
h = ReadDouble("Enter height: ");
area = ComputeTrapezoidArea(a, b, h);
Console.WriteLine($"Trapezoid Area: {area}");
Console.WriteLine("Returned to Main Menu");
Console.WriteLine("Invalid input " + input);
static void PerimiterMenu()
Console.WriteLine("Perimiter menu:");
Console.WriteLine("C. Circle");
Console.WriteLine("E. Equilateral Triangle");
Console.WriteLine("T. Trapezoid");
Console.WriteLine("M. Main Menu");
Console.Write("Choose: ");
char input = ReadLowerChar();
double perimeter, a, b, c, d, radius;
radius = ReadDouble("Enter radius: ");
perimeter = ComputeCirclePerimiter(radius);
Console.WriteLine($"Circle Perimiter: {perimeter}");
a = ReadDouble("Enter side: ");
perimeter = ComputeEquilateralTrianglePerimiter(a);
Console.WriteLine($"Equilateral Triangle Perimiter: {perimeter}");
a = ReadDouble("Enter side a: ");
b = ReadDouble("Enter side b: ");
c = ReadDouble("Enter side c: ");
d = ReadDouble("Enter side d: ");
perimeter = ComputeTrapezoidPerimiter(a, b, c, d);
Console.WriteLine($"Trapezoid Perimeter: {perimeter}");
Console.WriteLine("Returned to Main Menu");
Console.WriteLine("Invalid input " + input);
Console.WriteLine("Volume menu:");
Console.WriteLine("C. Cube");
Console.WriteLine("R. Right Circular Cone");
Console.WriteLine("S. Sphere");
Console.WriteLine("M. Main Menu");
Console.Write("Choose: ");
char input = ReadLowerChar();
double volume, a, radius, height;
a = ReadDouble("Enter side: ");
volume = ComputeCubeVolume(a);
Console.WriteLine($"Cube Volume: {volume}");
radius = ReadDouble("Enter radius: ");
height = ReadDouble("Enter height: ");
volume = ComputeRightCircularConeVolume(radius, height);
Console.WriteLine($"Right Circular Cone Volume: {volume}");
radius = ReadDouble("Enter radius: ");
volume = ComputeSphereVolume(radius);
Console.WriteLine($"Sphere Volume: {volume}");
Console.WriteLine("Returned to Main Menu");
Console.WriteLine("Invalid input " + input);
static double ComputeCircleArea(double radius)
return Math.PI * Math.Pow(radius, 2);
static double ComputeEclipseArea(double a, double b)
static double ComputeTrapezoidArea(double a, double b, double h)
static double ComputeCirclePerimiter(double radius)
return 2 * Math.PI * radius;
static double ComputeEquilateralTrianglePerimiter(double side)
static double ComputeTrapezoidPerimiter(double a, double b, double c, double d)
static double ComputeCubeVolume(double side)
return Math.Pow(side, 3);
static double ComputeRightCircularConeVolume(double radius, double height)
return (1 / 3) * Math.PI * Math.Pow(radius, 2) * height;
static double ComputeSphereVolume(double radius)
return 4 * Math.PI * Math.Pow(radius, 3);