运用C#语言设计一个求图形面积的控制台应用程序。定义一个抽象类Figure有一个受保护的常量pi值为31415926;有一个抽象成员Area 可以计算该图形的面积并返回面积值小数。定义一个接口IFigure有一个方法成员Perimeter 可以计算该图形的周长并返回周长值小数。定义Figure和IFigure的派生类Circle、Rectangle、Triangle。Circle类有一个私有字
using System; using System.Collections.Generic;
namespace Test { public abstract class Figure { protected const double pi = 3.1415926; public abstract double Area(); }
public interface IFigure
{
double Perimeter();
}
public class Circle : Figure, IFigure
{
private double r;
public Circle(double r)
{
this.r = r;
}
public override double Area()
{
return pi * r * r;
}
public double Perimeter()
{
return 2 * pi * r;
}
}
public class Rectangle : Figure, IFigure
{
private double a, b;
public Rectangle(double a, double b)
{
this.a = a;
this.b = b;
}
public override double Area()
{
return a * b;
}
public double Perimeter()
{
return 2 * (a + b);
}
}
public class Triangle : Figure, IFigure
{
private double a, b, c;
public Triangle(double a, double b, double c)
{
this.a = a;
this.b = b;
this.c = c;
}
public override double Area()
{
double p = (a + b + c) / 2;
return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
}
public double Perimeter()
{
return a + b + c;
}
}
class Program
{
static void Main(string[] args)
{
string[] input = Console.ReadLine().Split();
if (input.Length == 1)
{
double r;
if (double.TryParse(input[0], out r) && r > 0)
{
Circle circle = new Circle(r);
Console.WriteLine("Circle area is {0}", circle.Area());
Console.WriteLine("Circle circumference is {0}", circle.Perimeter());
}
else
{
Console.WriteLine("Cannot build a circle.");
}
}
else if (input.Length == 2)
{
double a, b;
if (double.TryParse(input[0], out a) && double.TryParse(input[1], out b) && a > 0 && b > 0)
{
Rectangle rectangle = new Rectangle(a, b);
Console.WriteLine("Rectangle area is {0}", rectangle.Area());
Console.WriteLine("Rectangle circumference is {0}", rectangle.Perimeter());
}
else
{
Console.WriteLine("Cannot build a rectangle.");
}
}
else if (input.Length == 3)
{
double a, b, c;
if (double.TryParse(input[0], out a) && double.TryParse(input[1], out b) && double.TryParse(input[2], out c) && a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
{
Triangle triangle = new Triangle(a, b, c);
Console.WriteLine("Triangle area is {0}", triangle.Area());
Console.WriteLine("Triangle circumference is {0}", triangle.Perimeter());
}
else
{
Console.WriteLine("Cannot build a triangle.");
}
}
else
{
Console.WriteLine("Inputting illegal characters.");
}
}
}
原文地址: https://www.cveoy.top/t/topic/eNTw 著作权归作者所有。请勿转载和采集!