Создать класс Point - C# (193653)

Узнай цену своей работы

Формулировка задачи:

Создать класс Point, содержащий следующие члены класса: 1. Поля: • int x, y; 2. Конструкторы, позволяющие создать экземпляр класса: • с нулевыми координатами; • с заданными координатами. 3. Методы, позволяющие: • вывести координаты точки на экран; • рассчитать расстояние от начала координат до точки; • переместить точку на плоскости на вектор (a, b). 4. Свойства, позволяющие: • получить и установить координаты точки (доступное для чтения и записи); • умножить координаты точки на скаляр (доступное только для записи). 5. Индексатор, позволяющий по индексу 0 обращаться к полю x, по индексу 1 – к полю y; при других значениях индекса должно выдаваться сообщение об ошибке. 6. Перегруженные операции и константы, позволяющие: • одновременно увеличить (уменьшить) значения полей х и у на 1 (операции ++ и --); • узнать, совпадают, или нет значения полей x и y (константы true и false); • одновременно добавить к полям х и у значение скаляра (бинарный +). Продемонстрировать работу класса. Выдаёт ошибку: Перегруженный бинарный оператор "==" принимает два параметра, как её исправить? Всё остальное в норме.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            Point gg = new Point(5, 6, 2);
            gg.Print();
            gg.Distance();
            Console.WriteLine("Расстояние от начала координат до точки = {0}", gg.Distance());
            gg.Move(2, -5);
            Console.WriteLine("Перемещение точки на вектор (а,b){0}", gg.Scalar(7));
            gg.Print();
            Console.WriteLine("Умножить координаты точки на скаляр");
            gg.Print();
            Console.WriteLine("Точка изменила координаты на +1 = {0}", ++gg);
            gg.Print();
            Console.WriteLine("Точка изменила координаты на -1 = {0}", --gg);
            gg.Print();
            Console.WriteLine("Проверка на равенсто х и у данной точки = {0}", gg.x == gg.y); //Хочу вывести на экран true или false
            Console.WriteLine("Добавление к полям х и у значение скаляра  {0}", gg + 5);
            gg.Print();           
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication11
{
    class Point
    {
        /// <summary>
        /// Абсцисса точки "X"
        /// </summary>
        public double x;
        /// <summary>
        /// Свойство для чтения и записи абциссы точки
        /// </summary>
        public double X
        {
            get { return x; }
            set { x = value; }
        }
        /// <summary>
        /// Ордината точки "Y"
        /// </summary>
        public double y;
        /// <summary>
        /// Свойство для чтения и записи ординаты точки
        /// </summary>
        
        public double Y
        {
            get { return y; }
            set { y = value; }
        }
        /// <summary>
        /// Значание скаляра 
        /// </summary>
        private double value1;
        /// <summary>
        /// Свойство для чтения и записи значения скаляра
        /// </summary>
    public double Value1
    {
        get { return value1;}
        set { value1 = value;}
    }
    
        /// <summary>
        /// Свойство, умножающее координаты точки на скаляр 
        /// </summary>
        public double Scalar
        {
            get { return value1; }
            set
            {
                x = x * value1;
                y = y * value1;
            }
        }
        /// <summary>
        /// Конструктор, создающий точку с заданными координатами и значение скаляра
        /// </summary>
        /// <param name="g"></param>
        /// <param name="h"></param>
        public Point(double g, double h, double r)
        {
            g = x;
            h = y;
            r = value1;
        }
        /// <summary>
        /// Конструктор, создающий точку с нулевыми координатами
        /// </summary>
        public Point()
        {
            this.x = 0;
            this.y = 0;
        }
 
        /// <summary>
        /// Метод выведения координаты точки на экран
        /// </summary>
        public void Print()
        {
            Console.WriteLine("Координата точки = ({0};{1})", x, y);
        }
        /// <summary>
        /// Метод выведения на экран расстояния от начала координат до точки
        /// </summary>
        /// <returns></returns>
        public double Distance()
        {
            return Math.Sqrt(x * x + y * y);
        }
        /// <summary>
        /// Метод перемещения точки на вектор (а,b)
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        public void Move(double a, double  b)
        {
            x += a;
            y += b;
        }
        /// <summary>
        /// Индексатор,позволяющий по индексу 0 обращаться к полю x, по индексу 1 - к полю y.
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public double this[int index]               
        {
            get
            {
                if (index == 0) return x;
                if (index == 1) return y;
                else
                {
                    throw new Exception();                   
                }
            }
            set
            {
                if (index == 0) x = value;
                if (index == 1) y = value;
                
            }
        }
        /// <summary>
        /// Одновременно увеличивает значение полей x и y
        /// </summary>
        /// <param name="ob"></param>
        /// <returns></returns>
        public static Point operator ++(Point ob)       
        {
            ob.x = ob.x + 1;
            ob.y = ob.y + 1;
            return ob;
        }
        /// <summary>
        /// Одновременно уменьшает значение полей x и y
        /// </summary>
        /// <param name="ob"></param>
        /// <returns></returns>
        public static Point operator --(Point ob)       
        {
            try
            {
                ob.x = ob.x - 1;
                ob.y = ob.y - 1;
                if (ob.y < 0 | ob.x < 0) throw new System.ArithmeticException();
            }
            catch (System.ArithmeticException)
            {
                Console.WriteLine("Уменьшение не возможно !");
                ob.x = ob.x + 1;
                ob.y = ob.y + 1;
            }
            return ob;
 
        }

        /// <summary>
        /// Возращает значение true, если поле x = y, иначе false
        /// </summary>
        /// <param name="ob"></param>
        /// <returns></returns>
        public bool operator ==(Point x, Point y, Point sd)    //здесь ошибка    
        {
            if(sd.x == sd.y)
            {
                return true;
            }
            else if(sd.x != sd.y)
            {
            return false;
            }
        }
        
        /// <summary>
        /// Добавляет к значению поля x и y значение скаляра n
        /// </summary>
        /// <param name="ob"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static Point operator +(Point ob,double n)        
        {
            ob.x = ob.x + n;
            ob.y = ob.y + n;
            return ob;
        }
        
    }
}

Решение задачи: «Создать класс Point»

textual
Листинг программы
        /// <summary>
        /// Возращает значение true, если поле x = y, иначе false
        /// </summary>
        public static bool operator ==(Point x, Point y)
        {
            return (x.X == y.X) && (x.Y == y.Y);
        }
 
        /// <summary>
        /// Возращает значение true, если поле x != y, иначе false
        /// </summary>
        public static bool operator !=(Point x, Point y)
        {
            return (x.X != y.X) || (x.Y != y.Y);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы