点线面
时间: 1ms 内存:128M
描述:
定义一个点的类CPoint作为基类。派生出一条直线的类Cline,并定一个方法(Dis)可求出两点间的距离。请在此基础上再派生出一个矩形类CRect。要求成员函数能计算矩形的周长(Getlength)和面积(Getarea)等。构造完整的程序并设计一个测试程序进行测试。测试程序中调用类中相应方法,验证各方法的正确性。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
//
//
class Program
{
static void Main(string[] args)
{
CPoint p1 = new CPoint();
CPoint p4 = new CPoint();
int i;
int num= Convert.ToInt32(Console.ReadLine());
int num2= Convert.ToInt32(Console.ReadLine());
// Console.WriteLine(num);
p1.setPoint(num,num);
p4.setPoint(num2,num2);
CRect cr=new CRect();
Cline cl1 = new Cline();
Console.WriteLine("p1p2={0}",cl1.Dis(p1,p4));
Console.WriteLine("Perimeter and area={0},{1}", cr.Getlength(p1, p4), cr.Getarea(p1, p4));
Console.ReadKey();
}
}
}
输入:
两个int,num和num2.构成两个坐标p1(num,num)p2(num2,num2).
输出:
两行
第一行为p1 p2 的距离,
第二行为矩形的周长和面积。
示例输入:
1
2
示例输出:
p1p2=1.4142135623731
Perimeter and area=4,1
提示:
参考答案(内存最优[0]):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class CPoint
{
public double x;
public double y;
public double GetX() { return x; }
public double GetY() { return y; }
public void setPoint(int m,int n){x=m;y=n;}
}
class Cline : CPoint
{
public double Dis(CPoint P1,CPoint P2)
{
double dis;
dis = Math.Sqrt((P1.GetX() - P2.GetX()) * (P1.GetX() - P2.GetX()) + (P1.GetY() - P2.GetY()) * (P1.GetY() - P2.GetY()));
return dis;
}
}
class CRect : Cline
{
public CRect() { }
double length=0, area=0;
public double Getlength(CPoint p1,CPoint p4)
{
return length = 2 * (Math.Abs((p1.GetY() - p4.GetY())) + Math.Abs((p4.GetX() - p1.GetY())));
}
public double Getarea(CPoint p1,CPoint p4)
{
return area = Math.Abs(p1.GetY() - p4.GetY()) * Math.Abs(p4.GetX() - p1.GetY());
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("p1=(1,1),p4=(2,2)");
CPoint p1 = new CPoint();
CPoint p4 = new CPoint();
int i;
int num= Convert.ToInt32(Console.ReadLine());
// Console.WriteLine(num);
p1.setPoint(1,1);
p4.setPoint(2,2);
CRect cr=new CRect();
Cline cl1 = new Cline();
Console.WriteLine("p1p2={0}",cl1.Dis(p1,p4));
Console.WriteLine("矩形的周长为{0},面积为{1}", cr.Getlength(p1, p4), cr.Getarea(p1, p4));
Console.ReadKey();
}
}
}
参考答案(时间最优[0]):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class CPoint
{
public double x;
public double y;
public double GetX() { return x; }
public double GetY() { return y; }
public void setPoint(int m,int n){x=m;y=n;}
}
class Cline : CPoint
{
public double Dis(CPoint P1,CPoint P2)
{
double dis;
dis = Math.Sqrt((P1.GetX() - P2.GetX()) * (P1.GetX() - P2.GetX()) + (P1.GetY() - P2.GetY()) * (P1.GetY() - P2.GetY()));
return dis;
}
}
class CRect : Cline
{
public CRect() { }
double length=0, area=0;
public double Getlength(CPoint p1,CPoint p4)
{
return length = 2 * (Math.Abs((p1.GetY() - p4.GetY())) + Math.Abs((p4.GetX() - p1.GetY())));
}
public double Getarea(CPoint p1,CPoint p4)
{
return area = Math.Abs(p1.GetY() - p4.GetY()) * Math.Abs(p4.GetX() - p1.GetY());
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("p1=(1,1),p4=(2,2)");
CPoint p1 = new CPoint();
CPoint p4 = new CPoint();
int i;
int num= Convert.ToInt32(Console.ReadLine());
// Console.WriteLine(num);
p1.setPoint(1,1);
p4.setPoint(2,2);
CRect cr=new CRect();
Cline cl1 = new Cline();
Console.WriteLine("p1p2={0}",cl1.Dis(p1,p4));
Console.WriteLine("矩形的周长为{0},面积为{1}", cr.Getlength(p1, p4), cr.Getarea(p1, p4));
Console.ReadKey();
}
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。