using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
namespace triangle1
{
public class triangle
{
public static void Main()
{
triangle tri = new triangle();
ArrayList al = new ArrayList();
Point p1= new Point();
Point p2 = new Point();
Point p3 = new Point();
Point p4 = new Point();
Console.WriteLine("请输入第1个点的x坐标"); //为3角形的p1,p2,p3的坐标赋值
p1.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第1个点的y坐标");
p1.y=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第2个点的x坐标");
p2.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第2个点的y坐标");
p2.y = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("请输入第3个点的x坐标");
p3.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第3个点的y坐标");
p3.y = Convert.ToDouble(Console.ReadLine()); al.Add(p1);
al.Add(p2);
al.Add(p3); if (IsTriangle(al))
{
Console.WriteLine("能组成3角形");
double b=triangleArea(p1, p2, p3);
Console.WriteLine("area is"+b);
}
else
Console.WriteLine("输入的3点不能组成3角形");
} public static bool IsTriangle(ArrayList ptList) //此函数判断输入的3个点是否能够组成3角形,2边之个大于第3边
{ Point pt0 = (Point)ptList[0]; Point pt1 = (Point)ptList[1]; Point pt2 = (Point)ptList[2]; //如果有两个点相同 if (pt0.Equals(pt1) || pt0.Equals(pt2) || pt1.Equals(pt2))
{ return false; } float length_01 = (float)Math.Sqrt((pt0.x - pt1.x) * (pt0.x - pt1.x) + (pt0.y - pt1.y) * (pt0.y - pt1.y)); float length_02 = (float)Math.Sqrt((pt0.x - pt2.x) * (pt0.x - pt2.x) + (pt0.y - pt2.y) * (pt0.y - pt2.y)); float length_12 = (float)Math.Sqrt((pt2.x - pt1.x) * (pt2.x - pt1.x) + (pt2.y - pt1.y) * (pt2.y - pt1.y)); bool result0 = (length_01 + length_02 <= length_12); bool result1 = (length_01 + length_12 <= length_02); bool result2 = (length_02 + length_12 <= length_01); if (result0 || result1 || result2)
{ return false; } return true; }
public double triangleArea(Point p1, Point p2, Point p3) //求三角形的面积
{
double result = Math.Abs((p1.x * p2.y + p2.x * p3.y + p3.x * p1.y
- p2.x * p1.y - p3.x * p2.y - p1.x * p3.y) / 2.0D);
return result;
} public Boolean inTriangle(Point p4, Point p1, Point p2,Point p3) //判断点是否在三角形内
{
double triangleArea = triangleArea(p1, p2, p3);
double area = triangleArea(p, p1, p2);
area += triangleArea(p, p1, p3);
area += triangleArea(p, p2, p3);
double epsilon = 0.001; // 由于浮点数的计算存在着误差,故指定一个足够小的数,用于判定两个面积是否(近似)相等。
if (Math.Abs(triangleArea - area) < epsilon)
{
return true;
}
return false;
}
class Point
{
public double x;
public double y;
public Point()
{ }
}
}
}
编译老出错错误 可访问性不一致: 参数类型“triangle1.triangle.Point”比方法“triangle1.triangle.triangleArea(triangle1.triangle.Point, triangle1.triangle.Point, triangle1.triangle.Point)”的可访问性低 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\triangle1\triangle1\Program.cs 111 24 triangle1
using System.Collections.Generic;
using System.Collections;
using System.Text;
namespace triangle1
{
public class triangle
{
public static void Main()
{
triangle tri = new triangle();
ArrayList al = new ArrayList();
Point p1= new Point();
Point p2 = new Point();
Point p3 = new Point();
Point p4 = new Point();
Console.WriteLine("请输入第1个点的x坐标"); //为3角形的p1,p2,p3的坐标赋值
p1.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第1个点的y坐标");
p1.y=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第2个点的x坐标");
p2.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第2个点的y坐标");
p2.y = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("请输入第3个点的x坐标");
p3.x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第3个点的y坐标");
p3.y = Convert.ToDouble(Console.ReadLine()); al.Add(p1);
al.Add(p2);
al.Add(p3); if (IsTriangle(al))
{
Console.WriteLine("能组成3角形");
double b=triangleArea(p1, p2, p3);
Console.WriteLine("area is"+b);
}
else
Console.WriteLine("输入的3点不能组成3角形");
} public static bool IsTriangle(ArrayList ptList) //此函数判断输入的3个点是否能够组成3角形,2边之个大于第3边
{ Point pt0 = (Point)ptList[0]; Point pt1 = (Point)ptList[1]; Point pt2 = (Point)ptList[2]; //如果有两个点相同 if (pt0.Equals(pt1) || pt0.Equals(pt2) || pt1.Equals(pt2))
{ return false; } float length_01 = (float)Math.Sqrt((pt0.x - pt1.x) * (pt0.x - pt1.x) + (pt0.y - pt1.y) * (pt0.y - pt1.y)); float length_02 = (float)Math.Sqrt((pt0.x - pt2.x) * (pt0.x - pt2.x) + (pt0.y - pt2.y) * (pt0.y - pt2.y)); float length_12 = (float)Math.Sqrt((pt2.x - pt1.x) * (pt2.x - pt1.x) + (pt2.y - pt1.y) * (pt2.y - pt1.y)); bool result0 = (length_01 + length_02 <= length_12); bool result1 = (length_01 + length_12 <= length_02); bool result2 = (length_02 + length_12 <= length_01); if (result0 || result1 || result2)
{ return false; } return true; }
public double triangleArea(Point p1, Point p2, Point p3) //求三角形的面积
{
double result = Math.Abs((p1.x * p2.y + p2.x * p3.y + p3.x * p1.y
- p2.x * p1.y - p3.x * p2.y - p1.x * p3.y) / 2.0D);
return result;
} public Boolean inTriangle(Point p4, Point p1, Point p2,Point p3) //判断点是否在三角形内
{
double triangleArea = triangleArea(p1, p2, p3);
double area = triangleArea(p, p1, p2);
area += triangleArea(p, p1, p3);
area += triangleArea(p, p2, p3);
double epsilon = 0.001; // 由于浮点数的计算存在着误差,故指定一个足够小的数,用于判定两个面积是否(近似)相等。
if (Math.Abs(triangleArea - area) < epsilon)
{
return true;
}
return false;
}
class Point
{
public double x;
public double y;
public Point()
{ }
}
}
}
编译老出错错误 可访问性不一致: 参数类型“triangle1.triangle.Point”比方法“triangle1.triangle.triangleArea(triangle1.triangle.Point, triangle1.triangle.Point, triangle1.triangle.Point)”的可访问性低 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\triangle1\triangle1\Program.cs 111 24 triangle1
另外,Lz的inTriangle 方法里判断的参数不对啊。p0,p1,p2,p3.哪里有P啊?
分析原因:
在C#中如果在同一个命名空间有一个类和一个方法,在这种情况下,如果在方法中使用该类时,方法没有访问权限,这当然是不允许的,因此,自然也就无法使用public方法了,所以,c#编译器规定public方法的参数类型必须也被声明成public。