新手入门问题,还请大家帮忙解答!

bestzyed 2016-05-13 01:42:37
声明一个类MyPoint,该类有两个字段x和y,分别代表该点的横纵坐标,设计一个2参构造函数可以用于传入x和y,设计一个实例方法CalDis,用于计算两个MyPoint对象之间的距离,距离公式使用平方根距离(即两点横纵坐标差值的平方和 开平方根)。然后随机生成10个MyPoint实例【存入数组或集合】,计算这10个点之间的最短距离或最长距离。求解答,谢谢啦!
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hejie13250 2016-05-14
  • 打赏
  • 举报
回复

using System;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      var p1 = new point { X = 10, Y = 12 };
      var p2 = new point { X = 7, Y = 8 };
      Console.WriteLine(distance(p1, p2));
    }
    static double distance(point p1, point p2) //两点之间的直线距离
    {
      double distan;
      distan = Math.Sqrt(Math.Pow(Math.Abs(p1.X - p2.X), 2) + Math.Pow(Math.Abs(p1.Y - p2.Y), 2));
      return distan;
    }
  }
  public class point
  {
    private int x;
    private int y;

    public int X
    {
      get { return x; }
      set { x = value; }
    }
    public int Y
    {
      get { return y; }
      set { y = value; }
    }
  }
}
兵工厂三剑客 2016-05-13
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Distance
{
    class Program
    {
        static double CalDis(MyPoint p1,MyPoint p2)
        { 
            double value=System.Math.Pow(System.Math.Abs(p1.X-p2.X),2)+System.Math.Pow(System.Math.Abs(p1.Y-p2.Y),2);
            double distance = System.Math.Sqrt(value);
            return distance;
        }
        static double[,] Values(List<MyPoint> list)
        {
            double[,] values = new double[1,2];
            for (int i = 0; i < list.Count-1; i++)
            {
                for (int j = 1; j < list.Count; j++)
                {
                    Console.WriteLine("当前元素i_x={0},i_y={1};j_x={2},j_y={3};距离={4}",list.ElementAt(i).X,list.ElementAt(i).Y,list.ElementAt(j).X,list.ElementAt(j).Y, CalDis(list.ElementAt(i), list.ElementAt(j)));
                    if (i == 0 && j == 1)
                    {
                        values[0, 0] = CalDis(list.ElementAt(0), list.ElementAt(1));//先赋给最大初值
                        values[0, 1] = CalDis(list.ElementAt(0), list.ElementAt(1));//先赋个最小初值
                        continue;
                    }
                    if (values[0, 0] < CalDis(list.ElementAt(i), list.ElementAt(j)))
                    {
                        values[0, 0] = CalDis(list.ElementAt(i), list.ElementAt(j));
                    }
                    else
                    {
                        values[0, 1] = CalDis(list.ElementAt(i), list.ElementAt(j));
                    }
                }
            }
            return values;
        }
        
        static void Main(string[] args)
        {
            Random random = new Random();
            List<MyPoint> list = new List<MyPoint>();
            for (int i = 0; i < 10; i++)
            {
                list.Add(new MyPoint(random.Next(10),random.Next(10)));//产生10个横纵坐标值不超过10的随机点
            }
            
            double[,] values = Values(list);
            Console.WriteLine("最大值={0},最小值={1}",values[0, 0],values[0, 1]);
            Console.ReadKey();

        }
        
    }
    class MyPoint
    {
        private int _x;
        private int _y;
        public MyPoint(int x, int y)
        {
            _x = x;
            _y = y;
        }
        public int X
        {
            get { return _x; }
            set { _x = value; }
        }
        public int Y
        {
            get { return _y; }
            set { _y = value; }
        }
    }
}

Poopaye 2016-05-13
  • 打赏
  • 举报
回复
作业请独立思考

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧