none
Помогите пожалуйста найти ошибки в коде!!! RRS feed

  • Вопрос

  • Вот задание:

    Разработать класс Segment, описывающий отрезок в пространстве (координаты начала и конца) и основные операции с ним – определение длины отрезка, определение расстояния от расположенной в пространстве точки до отрезка. 

    Код:

    class Point
        {
            public double x, y, z;
            public Point(double x, double y, double z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
        }
        class Segment
        {
            public Point a { set; get; }
            public Point b { set; get; }
     
            public Segment(Point a, Point b)   //конструктор
            {
                this.a = a;
                this.b = b;

                Math.Sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y) + (b.z - a.z) * (b.z - a.z));
            }

            private double Length(double ab)
            {
                throw new NotImplementedException();
            }

            private double Length(Point a, Point b, Point с )
            {

                double normal = 0;
                double ac = 0;
                double cb = 0;
                double ab = 0;

                //Длины между двумя точками
                ac = Length(ac);
                cb = Length(cb);
                ab = Length(ab);
                double p = (ac + cb + ab) / 2;
                normal = Math.Sqrt(p * (p - ac) * (p - cb) * (p - ab)) / ab * 2;
                {
                    return Math.Sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y) + (b.z - a.z) * (b.z - a.z));
                }
            }
            public void show()  //вывод координат
            {
                Console.WriteLine("a(x,y,z)={0},{1},{2}\nb(x,y,z)={3},{4},{5}", a.x, a.y, a.z, b.x, b.y, b.z);
                Console.WriteLine("Длина отрезка = ", normal);
                Console.WriteLine("Расстояние от точки для отрезка = ", Length(a, b));
                Console.ReadKey();
            }

        }
     
        class Program
         {
            static void Main(string[] args)
            {
                Point a = new Point(1, 1, 1);
                Point b = new Point(4, 4, 4);
                Point c = new Point(2, 2, 2);
                Segment T = new Segment(a, b);
                T.show();
            }
        }
    }

    9 октября 2013 г. 14:50

Ответы

  •  private double Length(double ab)
            {
                throw new NotImplementedException(); // ОБРАТИТЕ ВНИМАНИЕ СЮДА, ВЫ НЕ РЕАЛИЗОВАЛИ МЕТОД 
            }
    
            private double Length(Point a, Point b, Point с )
            {
    
                double normal = 0;
                double ac = 0;
                double cb = 0;
                double ab = 0;
    
                //Длины между двумя точками
                ac = Length(ac); // А ВОТ ЗДЕСЬ ВЫ ЕГО ИСПОЛЬЗУЕТЕ, НЕ РЕАЛИЗОВАННЫЙ МЕТОД ! ! ! 
                cb = Length(cb);
                ab = Length(ab);
                double p = (ac + cb + ab) / 2;
                normal = Math.Sqrt(p * (p - ac) * (p - cb) * (p - ab)) / ab * 2;
                {
                    return Math.Sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y) + (b.z - a.z) * (b.z - a.z));
                }
            }

    • Помечено в качестве ответа _TATYANA_ 10 октября 2013 г. 3:14
    9 октября 2013 г. 19:05
  • у вас почти правильно,

    public void show()  //вывод координат
            {
                Console.WriteLine("a(x,y,z)={0},{1},{2}\nb(x,y,z)={3},{4},{5}", a.x, a.y, a.z, b.x, b.y, b.z);
                Console.WriteLine("Длина отрезка = {0}", Length(a, b));
                Console.WriteLine("Расстояние от точки до отрезка = {0}", normal); //
                Console.ReadKey();
            }

    • Помечено в качестве ответа _TATYANA_ 10 октября 2013 г. 3:14
    10 октября 2013 г. 1:39

Все ответы

  • Уважаемая Татьяна. В Вашем коде столько ошибок, что даже не знаешь о какой сказать :) Здесь, как правило, не решают контрольные работы. Вам, видимо, следует почитать учебник.
    9 октября 2013 г. 16:43
  •  private double Length(double ab)
            {
                throw new NotImplementedException(); // ОБРАТИТЕ ВНИМАНИЕ СЮДА, ВЫ НЕ РЕАЛИЗОВАЛИ МЕТОД 
            }
    
            private double Length(Point a, Point b, Point с )
            {
    
                double normal = 0;
                double ac = 0;
                double cb = 0;
                double ab = 0;
    
                //Длины между двумя точками
                ac = Length(ac); // А ВОТ ЗДЕСЬ ВЫ ЕГО ИСПОЛЬЗУЕТЕ, НЕ РЕАЛИЗОВАННЫЙ МЕТОД ! ! ! 
                cb = Length(cb);
                ab = Length(ab);
                double p = (ac + cb + ab) / 2;
                normal = Math.Sqrt(p * (p - ac) * (p - cb) * (p - ab)) / ab * 2;
                {
                    return Math.Sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y) + (b.z - a.z) * (b.z - a.z));
                }
            }

    • Помечено в качестве ответа _TATYANA_ 10 октября 2013 г. 3:14
    9 октября 2013 г. 19:05
  • Исправила! Только вот теперь затруднение с выводом на экран :(

    class Point3D
        {
            public double x, y, z;
            public Point3D(double x, double y, double z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
        }
        class Segment
        {
            public Point3D a { set; get; }
            public Point3D b { set; get; }
            public Point3D c { set; get; }

            public Segment(Point3D a, Point3D b)   //конструктор
            {
                this.a = a;
                this.b = b;
            }

            private double Length(Point3D a, Point3D b)
            {
                return Math.Sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y) + (b.z - a.z) * (b.z - a.z));
            }

            public double normal { get; set; }
            public double Normal(Point3D a, Point3D b, Point3D c)
            {
                double ac = Length(a, c);
                double cb = Length(c, b);
                double ab = Length(a, b);
                double p = (ac + cb + ab) / 2;
                normal = Math.Sqrt(p * (p - ac) * (p - cb) * (p - ab)) / ab * 2;
                return normal;
            }

            public void show()  //вывод координат
            {
                Console.WriteLine("a(x,y,z)={0},{1},{2}\nb(x,y,z)={3},{4},{5}", a.x, a.y, a.z, b.x, b.y, b.z);
                Console.WriteLine("Длина отрезка = ", Length(a, b)); //ВОТ ЗДЕСЬ И НИЖЕ ЧТО-ТО ЕЩЁ ДОЛЖНО БЫТЬ...
                Console.WriteLine("Расстояние от точки до отрезка = ", normal); //
                Console.ReadKey();
            }

            
        }

        class Program
        {
            static void Main(string[] args)
            {
                Point3D a = new Point3D(1, 1, 1);
                Point3D b = new Point3D(4, 4, 4);
                Point3D c = new Point3D(2, 2, 2);
                Segment T = new Segment(a, b);
                T.show();
            }
        }
    }
    9 октября 2013 г. 23:26
  • у вас почти правильно,

    public void show()  //вывод координат
            {
                Console.WriteLine("a(x,y,z)={0},{1},{2}\nb(x,y,z)={3},{4},{5}", a.x, a.y, a.z, b.x, b.y, b.z);
                Console.WriteLine("Длина отрезка = {0}", Length(a, b));
                Console.WriteLine("Расстояние от точки до отрезка = {0}", normal); //
                Console.ReadKey();
            }

    • Помечено в качестве ответа _TATYANA_ 10 октября 2013 г. 3:14
    10 октября 2013 г. 1:39
  • Спасибо большое! Очень помогли!!!
    10 октября 2013 г. 3:14