Создать класс 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д