派生类求两点间的距离、矩形的周长和面积

来源:互联网 发布:淘宝c店代运营 编辑:程序博客网 时间:2024/06/05 08:02

问题及代码:

平面直角坐标系上的一点类CPoint作为基类,派生出描述一条直线的类Cline,再派生出一个矩形类CRect。

要求成员函数能求出两点间的距离、矩形的周长和面积等。

using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{    class CPoint    {        private double x;        private double y;        public CPoint() { }        public CPoint(double x, double y) { this.x = x; this.y = y; }        public static double Distance(CPoint n1, CPoint n2)        {            return Math.Abs(Math.Pow(n1.x - n2.x, 2) + Math.Pow(n1.y - n2.y, 2));        }    }    class Cline : CPoint    {        private CPoint n1;        private CPoint n2;        public static double operator *(Cline a, Cline b)        {            return CPoint.Distance(a.n1, a.n2) * CPoint.Distance(a.n1, a.n2);        }        public static double operator +(Cline a, Cline b)        {            return CPoint.Distance(a.n1, a.n2) + CPoint.Distance(a.n1, a.n2);        }        public Cline() { }        public Cline(CPoint n1, CPoint n2) { this.n1 = n1; this.n2 = n2; }    }    class CRect : Cline    {        Cline a;        Cline b;        public CRect() { }        public CRect(Cline a, Cline b) { this.a = a; this.b = b; }        public double Perimeter()        {            return (a + b) * 2;        }        public double Area()        {            return a * b;        }    }    class Program    {        static void Main(string[] args)        {            Console.Write("x1=");            int x1 = int.Parse(Console.ReadLine());            Console.Write("y1=");            int y1 = int.Parse(Console.ReadLine());            Console.Write("x2=");            int x2 = int.Parse(Console.ReadLine());            Console.Write("y2=");            int y2 = int.Parse(Console.ReadLine());            CPoint n1 = new CPoint(x1, y1);            CPoint n2 = new CPoint(x2, y2);            Console.WriteLine("两点之间的距离为:{0}", CPoint.Distance(n1, n2));            Console.Write("x1=");            x1 = int.Parse(Console.ReadLine());            Console.Write("y1=");            y1 = int.Parse(Console.ReadLine());            Console.Write("x2=");            x2 = int.Parse(Console.ReadLine());            Console.Write("y2=");            y2 = int.Parse(Console.ReadLine());            CPoint n3 = new CPoint(x1, y1);            CPoint n4 = new CPoint(x2, y2);            Cline a = new Cline(n1, n2);            Cline b = new Cline(n2, n4);            CRect rect = new CRect(a, b);            Console.WriteLine("由点({0},{1})和点({2},{3})组成的", x1,y1,x2,y2);            Console.WriteLine("矩形的长为:{0}", CPoint.Distance(n1, n2));            Console.WriteLine("矩形的宽为:{0}", CPoint.Distance(n2, n4));            Console.WriteLine("矩形的面积为:{0}", rect.Area());            Console.WriteLine("矩形的周长为:{0}", rect.Perimeter());            Console.ReadKey();        }    }}

运行结果:


1 0
原创粉丝点击