Свойство, доступное только для записи - C#

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

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

Проверьте, пожалуйста, код.

Проблема:

требуется написать свойство, позволяющее умножить координаты точки на скаляр, доступное только для записи. class Point: строки с 67 по 80. В Program вместо новых координат (полученных в методе Move), подставляются старые координаты точки (1,2), причем при расчете

y

value удваивается (координата умножается на 6). Строки 26 - 28.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Practice_Classes
{
    class Point
    {
        int x;
        int y;
        public Point()  //конструктор для нулевых координат
        {
            x = 0;
            y = 0;
        }
        public Point(int x, int y)  //конструктор для заданных координат
        {
            this.x = x;
            this.y = y;
        }
 
         public void Print() // вывести координаты точек на экран;
        {
            Console.WriteLine("Координаты точки: х = {0}, y = {1}", x, y);
        }
        public double Length(int x, int y)  //  рассчитать расстояние от начала координат до точки;
        {
            return Math.Sqrt(x * x + y * y);
        }
 
        public static void Move(int x, int y)  //   переместить точку на плоскости на вектор(a, b) , int a, int b
        {
            Console.WriteLine("Перемещение точки на плоскости на вектор(a, b). Введите а:");
            int a = int.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите b:");
            int b = int.Parse(Console.ReadLine());
            x = x + a;
            y = y + b;
 
            Console.WriteLine("Координаты точки: х = {0}, y = {1}", x, y);
        }
        public int X //свойство для обращения к полю x
        {
            get
            {
                return x;
            }
            set
            {
                x = value;
            }
        }
        public int Y //свойство для обращения к полю y
        {
            get
            {
                return y;
            }
            set
            {
                y = value;
            }
        }
        //Свойство, позволяющее умножить координаты точки на скаляр (доступное только для записи)
        public int Sx //свойство только для записи
        {
            set
            {
                x = x * value;
            }
        }
        public int Sy //свойство только для записи
        {
            set
            {
                y = y * value;
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Practice_Classes
{
    class Program
    {
        static void Main(string[] args)
        {
            Point p1 = new Point();
            p1.Print();
 
            Point p2 = new Point(1,2);
            p2.Print();
 
            double z = p2.Length(p2.X,p2.Y); //вызов метода Length
 
            Console.WriteLine("Расстояние между точками (0,0) и ({0},{1}) = {2:f2}", p2.X, p2.Y, z);
 
            Point.Move(p2.X,p2.Y);
 
            // Дальше что-то не так... Вместо новых координат (полученных в методе Move), подставляются старые координаты точки (1,2). 
            p2.Sx = p2.X * 3;
            p2.Sy = p2.Y * 3; // Вместо 3 подставляется 6!
            Console.WriteLine("Координаты точки: х = {0}, y = {1}", p2.X, p2.Y);
 
            Console.ReadKey();
        }
    }
}

Решение задачи: «Свойство, доступное только для записи»

textual
Листинг программы
            set
            {
                x = x * value;
            }

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


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

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

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