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.");
        }
    }
}
运用C#语言设计一个求图形面积的控制台应用程序。定义一个抽象类Figure有一个受保护的常量pi值为31415926;有一个抽象成员Area 可以计算该图形的面积并返回面积值小数。定义一个接口IFigure有一个方法成员Perimeter 可以计算该图形的周长并返回周长值小数。定义Figure和IFigure的派生类Circle、Rectangle、Triangle。Circle类有一个私有字

原文地址: https://www.cveoy.top/t/topic/eNTw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录