using
System;
public
class
Scanner : IDisposable
{
private
readonly
System.IO.TextReader _reader;
private
string
_inputBuffer =
string
.Empty;
public
Scanner(System.IO.TextReader reader =
null
)
{
_reader = reader ?? Console.In;
}
public
void
Dispose()
{
_reader.Dispose();
}
public
int
NextInt()
{
return
int
.Parse(Next());
}
public
double
NextDouble()
{
return
double
.Parse(Next());
}
private
string
Next()
{
if
(
string
.IsNullOrEmpty(_inputBuffer))
{
_inputBuffer = _reader.ReadLine();
if
(_inputBuffer ==
null
)
{
throw
new
InvalidOperationException(
"Not enough input."
);
}
}
var
tokens = _inputBuffer.Split(
new
[] {
' '
,
'\t'
}, StringSplitOptions.RemoveEmptyEntries);
if
(tokens.Length == 0)
{
throw
new
InvalidOperationException(
"Not enough input."
);
}
_inputBuffer =
string
.Empty;
return
tokens[0];
}
public
void
ClearBuffer()
{
_inputBuffer =
string
.Empty;
}
}
public
class
AreaCalculator
{
static
double
GetCircleArea(
double
radius)
{
return
Math.PI * radius * radius;
}
static
double
GetTriangleArea(
double
baseLength,
double
height)
{
return
baseLength * height * 0.5;
}
static
double
GetSquareArea(
double
side)
{
return
side * side;
}
static
double
GetRectangleArea(
double
length,
double
breadth)
{
return
length * breadth;
}
public
static
void
Main(
string
[] args)
{
bool
flag =
true
;
Scanner scanner =
new
Scanner();
while
(flag)
{
try
{
Console.WriteLine(
"Enter 1 to calculate the area of a circle"
);
Console.WriteLine(
"Enter 2 to calculate the area of a triangle"
);
Console.WriteLine(
"Enter 3 to calculate the area of a square"
);
Console.WriteLine(
"Enter 4 to calculate the area of a rectangle"
);
Console.WriteLine(
"Enter 5 to terminate the program"
);
int
choice = scanner.NextInt();
switch
(choice)
{
case
1:
Console.Write(
"Enter radius: "
);
double
radius = scanner.NextDouble();
Console.WriteLine(
"Area = "
+ GetCircleArea(radius));
break
;
case
2:
Console.Write(
"Enter base: "
);
double
baseLength = scanner.NextDouble();
Console.Write(
"Enter height: "
);
double
height = scanner.NextDouble();
Console.WriteLine(
"Area = "
+ GetTriangleArea(baseLength, height));
break
;
case
3:
Console.Write(
"Enter side length: "
);
double
side = scanner.NextDouble();
Console.WriteLine(
"Area = "
+ GetSquareArea(side));
break
;
case
4:
Console.Write(
"Enter length: "
);
double
length = scanner.NextDouble();
Console.Write(
"Enter breadth: "
);
double
breadth = scanner.NextDouble();
Console.WriteLine(
"Area = "
+ GetRectangleArea(length, breadth));
break
;
case
5:
flag =
false
;
break
;
default
:
Console.WriteLine(
"Invalid Choice"
);
break
;
}
}
catch
(InvalidOperationException e)
{
Console.WriteLine(e.Message);
break
;
}
}
Console.WriteLine(
"Program terminated"
);
}
}