Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 27

Создать неизменяемый класс Angle

05.10.2014, 14:43. Показов 2795. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Стоит такая задача: нужно создать неизменяемый класс Angle со следующими членами класса:
-методы Add и Subtract для сложения и вычитания углов.
-свойство Radians, возвращающее значение угла в радианах в диапазоне (-PI..PI]
-конструктор класса, создающий Angle по значению угла в радианах.
-конструктор класса, создающий Angle из вектора.
После чего эти методы и свойства надо протестить. Вся проблема в радианах. Не знаю, как протестить свойство Radians, ну и правилен ли код для этого свойства:

C#
1
2
3
4
5
6
7
8
9
10
public Angle(double rad)
        {
            double r = rad % 2 * Math.PI;
            double res = r;
            if (r > Math.PI)
                res = r - 2*Math.PI;
            if (r <= -Math.PI)
                res = r + 2*Math.PI;
            Radians = res;
        }
Помогите, пжлста
Какие значения можно проверить, правилен ли алгоритм для радианов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2014, 14:43
Ответы с готовыми решениями:

Создать класс Angle для работы с углами на плоскости
Создать класс Angle для работы с углами на плоскости. Предусмотреть перевод из градусной меры в радианную, сложение и вычитание углов с...

Создать класc Angle для роботы с углами на плоскости
Создать класc Angle для роботы с углами на плоскости, задаваемими величиной в градусах и минутах. Обязательно должны быть ...

Создать класс колесо, имеющее радиус. Определить конструкторы. Создать класс машин, содержащий класс колесо
Создать класс колесо, имеющее радиус. Определить конструкторы. Создать класс машин, содержащий класс колесо. Дополнительно есть марка,...

9
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
11.10.2014, 20:18
Цитата Сообщение от oceandriver Посмотреть сообщение
ну и правилен ли код для этого свойства:
Нет не правилен. Во первых это не свойство, а конструктор.
Во вторых, не знаю что это за манипуляции вы там делаете...на всякий случай приведу формулу перевода радиан в градусы. gradus = radian * 180 / пи
Цитата Сообщение от oceandriver Посмотреть сообщение
как протестить
Придумайте несколько примеров и решите их 2-мя способами: вручную и с вашей прогой. Если результаты совпадают значит алгоритм верен
0
25 / 25 / 16
Регистрация: 06.06.2014
Сообщений: 64
12.10.2014, 11:05
oceandriver,

Условие очень размытое, так что примерный вариант:

Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        private class Angle
        {
            private double radians;
 
            public Angle(double degree)
            {
                this.radians = (degree * Math.PI) / 180;
            }
 
            public double Radians
            {
                get { return this.radians; }
                private set { }
            }
 
            public double Add(double deg1, double deg2)
            {
                return deg1 + deg2;
            }
 
            public double Subtract(double deg1, double deg2)
            {
                return deg1 - deg2;
            }
        }
 
        private static void Main(string[] args)
        {
            Angle angle = new Angle(23);
            Console.WriteLine(angle.Radians);
            Console.ReadLine();
        }
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,231
12.10.2014, 11:09
Цитата Сообщение от AdamFreeman Посмотреть сообщение
return deg1 + deg2;
Возвращать нужно новый объект.
Класс должен быть неизменяемый - При каждой операции должен создаваться новый объект. Также как у System.String или System.Delegate
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
12.10.2014, 11:19
Цитата Сообщение от oceandriver Посмотреть сообщение
-свойство Radians, возвращающее значение угла в радианах в диапазоне (-PI..PI]
-конструктор класса, создающий Angle по значению угла в радианах.
Про градусы ничего не сказано. Зачем куда-то что-то переводить?
0
25 / 25 / 16
Регистрация: 06.06.2014
Сообщений: 64
12.10.2014, 12:25
IamRain,

Параметры нужно только через конструктор передавать?
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,231
12.10.2014, 13:03
Цитата Сообщение от AdamFreeman Посмотреть сообщение
IamRain,
Параметры нужно только через конструктор передавать?
Не в этом дело. Нужно создавать новый объект (например, с помощью операции new), и присваивать ему модифицированные поля старого.

Добавлено через 50 секунд
-->
Цитата Сообщение от oceandriver Посмотреть сообщение
Стоит такая задача: нужно создать неизменяемый класс Angle со следующими членами класса:
0
25 / 25 / 16
Регистрация: 06.06.2014
Сообщений: 64
12.10.2014, 14:49
Цитата Сообщение от IamRain Посмотреть сообщение
Нужно создавать новый объект (например, с помощью операции new), и присваивать ему модифицированные поля старого
Как понимаю таким образом

C#
1
2
3
4
5
6
7
8
9
10
11
 
            public double Add(double degree1, double degree2)
            {
                this.degree1 = new double();
                this.degree2 = new double();
 
                this.degree1 = degree1;
                this.degree2 = degree2;
 
                return this.degree1 + this.degree2;
            }
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,231
12.10.2014, 14:51
неа, думайте
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
12.10.2014, 17:26
Цитата Сообщение от IamRain Посмотреть сообщение
неа, думайте
Цитата Сообщение от IamRain Посмотреть сообщение
присваивать ему модифицированные поля старого.
с помощью индексаторов тогда... возможно. но писать код не стану - мне скорее на своем коде учиться ещё надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2014, 17:26
Помогаю со студенческими работами здесь

Создать абстрактный класс «Товар», на его основе создать класс «Автомобиль»
Вечер добрый, а может и не добрый. В изучении C# столкнулся с такой проблемой - как исключения. Имею такую задачу. Создать абстрактный...

Создать класс Point, на его основе создать класс Line
Здравствуйте, есть такая часть задачки: &quot;Создать класс Point, на его основе создать класс Line. В классах описать следующие элементы: ...

Создать базовый класс прямоугольник и класс-наследник квадрат
Создать базовый класс прямоугольник со свойствами ширина, длина, конструктором с параметрами и методом (метод должен быть виртуальный),...

Класс млекопитающих: создать дочерний класс кошка, который также характеризуется именем и положением в пространстве
Есть класс млекопитающих. Он у меня характеризуется именем и положением в пространстве. Хочу создать дочерний класс кошка, который также...

Создать какой-нибудь класс. Например класс автомобиль, объявить в нем поля с различными режимами доступа
Создать какой-нибудь класс. Например класс автомобиль, объявить в нем поля с различными режимами доступа используя объект класса и записать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru