Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 15

Описать класс, представляющий треугольник

05.04.2019, 14:07. Показов 5809. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Уважаемые программисты, помогите с решением этой задачи.

Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Описать свойства для получения состояния объекта. При невозможности построения треугольника выбрасывается исключение. Написать программу, демонстрирующую все разработанные элементы класса.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2019, 14:07
Ответы с готовыми решениями:

Описать класс треугольник
Ребят помогите, как описать класс этот. Описать класс треугольник с методами отображения параметров в диалоговое окно, конструкторами...

Описать класс "треугольник" с тремя полями — длинами сторон
Описать класс "треугольник" с тремя полями — длинами сторон. Добавить конструктор по умолчанию, конструктор с параметрами, метод print()....

Создайте класс Rectangle, представляющий прямоугольник
Создайте класс Rectangle, представляющий прямоугольник, экземпляры которого обладают четырьмя полями целого типа (x1, y1) (левый...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.04.2019, 14:12
что конкретно непонятно?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
05.04.2019, 14:12
а выводить (рисовать), надеюсь треугольники не нужно?!
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 15
05.04.2019, 14:15  [ТС]
Рисовать точно ничего не нужно,
это дополнение:
Разработать класс, который должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства. Методы и свойства должны обеспечивать непротиворечивый, полный и удобный интерфейс класса. При возникновении ошибок должно выбрасываться исключение.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
05.04.2019, 16:07
Java
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
public class Triangle {
    private Point a;
    private Point b;
    private Point c;
 
    Triangle(Point a, Point b, Point c) {
        checkPointsTriangle(a, b, c);
        this.a = a;
        this.b = b;
        this.c = c;
    }
 
    private void checkPointsTriangle(Point a, Point b, Point c) {
        if (a == null || b == null || c == null) {
            throw new IncorrectTriangleException("Point not may be null.");
        }
        double sideA = a.distanceTo(b);
        double sideB = b.distanceTo(c);
        double sideC = a.distanceTo(c);
        if (sideA * sideB * sideC == 0 || sideA + sideB <= sideC || sideA + sideC <= sideB) {
            throw new IncorrectTriangleException("incorrect triangle points.");
        }
    }
 
    public double getSideAB() {
        return this.a.distanceTo(this.b);
    }
 
    public double getSideBC() {
        return this.b.distanceTo(this.c);
    }
 
    public double getSideAC() {
        return this.a.distanceTo(this.c);
    }
 
    public double getPerimeter() {
        return getSideAB() + getSideBC() + getSideAC();
    }
 
    public double getArea() {
        double p = getPerimeter() / 2.;
        return Math.sqrt(p * (p - getSideAB()) * (p - getSideBC()) * (p - getSideAC()));
    }
 
    public void shiftTriangle(double xStep, double yStep) {
        this.a = new Point(this.a.getX() + xStep, this.a.getY() + yStep);
        this.b = new Point(this.b.getX() + xStep, this.b.getY() + yStep);
        this.c = new Point(this.c.getX() + xStep, this.c.getY() + yStep);
    }
 
    public Point getCenter() {
        double a = getSideBC();
        double b = getSideAC();
        double c = getSideAB();
        double x0 = (a * this.a.getX() + b * this.b.getX() + c * this.c.getX()) / (a + b + c);
        double y0 = (a * this.a.getY() + b * this.b.getY() + c * this.c.getY()) / (a + b + c);
        return new Point(x0, y0);
    }
 
    public void turnTriangle(int degree) {
        Point e = getCenter();
        double f = degree * (Math.PI / 180.);
        this.a = turnPoint(this.a, e, f);
        this.b = turnPoint(this.b, e, f);
        this.c = turnPoint(this.c, e, f);
    }
 
    public void changeScale(double k) {
        this.a = getScaleToPoint(this.a, k);
        this.b = getScaleToPoint(this.b, k);
        this.c = getScaleToPoint(this.c, k);
    }
 
    private Point getScaleToPoint(Point point, double k) {
        double x0 = point.getX() * k;
        double y0 = point.getY() * k;
        return new Point(x0, y0);
    }
 
    private Point turnPoint(Point point, Point e, double f) {
        Point res = new Point(point.getX() - e.getX(), point.getY() - e.getY());
        double x0 = res.getX() * Math.cos(f) - res.getY() * Math.sin(f);
        double y0 = res.getX() * Math.sin(f) + res.getY() * Math.cos(f);
        return new Point(x0 + e.getX(), y0 + e.getY());
    }
 
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Points:\n").append("   ");
        sb.append("A").append(this.a).append("; ");
        sb.append("B").append(this.b).append("; ");
        sb.append("C").append(this.c).append(";\n\n");
 
        sb.append("Sides [length]:\n");
        String parse = String.format("%.2f", getSideAB());
        sb.append("   ").append("AB = ").append(parse).append(";\n");
        parse = String.format("%.2f", getSideBC());
        sb.append("   ").append("BC = ").append(parse).append(";\n");
        parse = String.format("%.2f", getSideAC());
        sb.append("   ").append("AC = ").append(parse).append(";\n\n");
 
        parse = String.format("%.2f", getPerimeter());
        sb.append("Perimeter: ").append(parse).append(";\n");
        parse = String.format("%.2f", getArea());
        sb.append("Area:      ").append(parse).append(";\n\n");
 
        sb.append("Point center: O").append(getCenter()).append(";\n");
        return sb.toString();
    }
}
 
class IncorrectTriangleException extends RuntimeException {
    IncorrectTriangleException(String message) {
        super(message);
    }
}
 
class Point {
    private final double x;
    private final double y;
 
    public double getX() {
        return x;
    }
 
    public double getY() {
        return y;
    }
 
    Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
 
    public double distanceTo(Point point) {
        double temp = Math.pow(point.getX() - x, 2);
        temp += Math.pow(point.getY() - y, 2);
        return Math.sqrt(temp);
    }
 
    @Override
    public String toString() {
        return String.format("(%.2f; %.2f)", this.x, this.y);
    }
}
 
class TriangleTest {
    public static void main(String[] args) {
        Triangle triangle = new Triangle(new Point(1., 1.), new Point(2., 2.), new Point(3., 0.));
        System.out.println("Triangle info:\n" + triangle);
 
        System.out.println("Shift triangle to 2.0.\n");
        triangle.shiftTriangle(2.0, 2.0);
        System.out.println("Shift triangle:\n" + triangle);
 
        System.out.println("Turn triangle to 70 degree.\n");
        triangle.turnTriangle(70);
        System.out.println("Turn triangle:\n" + triangle);
 
        System.out.println("Scale triangle to 2.0.\n");
        triangle.changeScale(2.0);
        System.out.println("Scale triangle:\n" + triangle);
    }
}
1
0 / 0 / 0
Регистрация: 13.10.2017
Сообщений: 11
05.04.2019, 22:43
Пришёл с универа. Ещё раз благодарю за помощь!
В результате; три первые задачи сдал. Задание, где надо было прописать адрес к text.txt, не сдал. Пишет ошибку, как только начинаю прописывать адрес... А по треугольнику пока не смотрел, но должно быть всё ОК!
Позанимаюсь ещё немного...
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
06.04.2019, 14:27
Vlad1777, скинь сюда скриншот твоего проекта в компиляторе (программу работы с файлом)

Добавлено через 4 минуты
вывод треугольника забыл скинуть:

Java
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Triangle info:
Points:
   A(1,00; 1,00); B(2,00; 2,00); C(3,00; 0,00);
 
Sides [length]:
   AB = 1,41;
   BC = 2,24;
   AC = 2,24;
 
Perimeter: 5,89;
Area:      1,50;
 
Point center: O(1,86; 1,14);
 
Shift triangle to 2.0.
 
Shift triangle:
Points:
   A(3,00; 3,00); B(4,00; 4,00); C(5,00; 2,00);
 
Sides [length]:
   AB = 1,41;
   BC = 2,24;
   AC = 2,24;
 
Perimeter: 5,89;
Area:      1,50;
 
Point center: O(3,86; 3,14);
 
Turn triangle to 70 degree.
 
Turn triangle:
Points:
   A(3,70; 2,28); B(3,10; 3,57); C(5,32; 3,82);
 
Sides [length]:
   AB = 1,41;
   BC = 2,24;
   AC = 2,24;
 
Perimeter: 5,89;
Area:      1,50;
 
Point center: O(3,86; 3,14);
 
Scale triangle to 2.0.
 
Scale triangle:
Points:
   A(7,39; 4,57); B(6,20; 7,13); C(10,64; 7,64);
 
Sides [length]:
   AB = 2,83;
   BC = 4,47;
   AC = 4,47;
 
Perimeter: 11,77;
Area:      6,00;
 
Point center: O(7,72; 6,28);
 
 
Process finished with exit code 0
1
0 / 0 / 0
Регистрация: 04.05.2021
Сообщений: 4
27.10.2021, 16:33
ArtemFM, а можете на пальцах объяснить как работает ваш код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2021, 16:33
Помогаю со студенческими работами здесь

Разработать в BlueJ класс представляющий многоугольник
Всем доброго времени суток! Помогите разработать в BlueJ класс представляющий многоугольник с методом расчета его периметра. Программа...

Разработать класс, представляющий транспортное средство
Разработать класс, представляющий транспортное средство, с методами вывода на экран его скорости и грузоподъемности. программа должна...

Bluej+: Розработать класс. представляющий предмет мебели
Розработать класс. представляющий предмет мебели, с методом,выводящим его розмеры, и сравнивающим вес двух прадметов.

Разработать в BlueJ класс представляющий комплексное число
Всем доброго времени суток! Помогите разработать в BlueJ класс представляющий комплексное число!

Разработать класс представляющий успеваемость студента по дисциплине
Разработать класс представляющий успеваемость студента по дисциплине с методом определения его средней оценки. Создать 2 объекта класса:...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru