Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.03.2021
Сообщений: 59

Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат. Определить к

21.11.2021, 11:13. Показов 696. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат. Определить координаты пересечения двух прямых. Создать массив/список/множество объектов и определить группы параллельных прямых.

есть код, но он немного работает не так как надо, еще выдает ошибку, помогите пожалуйста)
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
package labka9;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class lab9 {
    public static void main(String[] args) {
        List<StraightLine> listLines = new ArrayList<>();
        listLines.add(new StraightLine(2, -1, -3));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 4));
        listLines.add(new StraightLine(-3, -1, 5));
        listLines.add(new StraightLine(-1, -1, 4));
        listLines.add(new StraightLine(-1, -1, 5));
 
 
        //печатаем все уравнения прямых и их точки пересечения с осями X и Y
        for (StraightLine line : listLines) {
            System.out.printf("Прямая: %s;%s", line, System.lineSeparator());
            System.out.printf("Точки пересечения с осями: %s, %s;%s",
                    line.getPointIntersectionWithX(), line.getPointIntersectionWithY(), System.lineSeparator());
            System.out.println();
        }
 
        //ищем пересечения прямых друг с другом (первые 2 из списка)
        System.out.println("Точки пересечения 2-х прямых:");
        System.out.printf("%s;%s%s;%s", listLines.get(0), System.lineSeparator(), listLines.get(1), System.lineSeparator());
        System.out.printf("%s%s", listLines.get(0).getPointIntersectionLines(listLines.get(1)), System.lineSeparator());
        System.out.println();
 
        //объеденяем в группы параллельности прямых
        Map<StraightLine, List<StraightLine>> groups = getGroupsParallel(listLines);
 
        //печатаем группы параллельности
        for (Map.Entry<StraightLine, List<StraightLine>> group : groups.entrySet()) {
            if (group.getValue().size() > 0) {
                System.out.printf("Прямая %s параллельна с:%s", group.getKey(), System.lineSeparator());
                for (StraightLine line : group.getValue()) {
                    System.out.printf("    %s;%s", line, System.lineSeparator());
                }
                System.out.println();
            }
        }
    }
 
    public static Map<StraightLine, List<StraightLine>> getGroupsParallel(List<StraightLine> list) {
        Map<StraightLine, List<StraightLine>> map = new HashMap<>();
        if (list != null && !list.isEmpty()) {
            boolean flag;
            while (!list.isEmpty()) {
                flag = false;
                StraightLine line = list.remove(0);
                for (StraightLine lineMap : map.keySet()) {
                    if (lineMap.isParallel(line)) {
                        map.get(lineMap).add(line);
                        flag = true;
                        break;
                    }
                }
                if (!flag) {
                    map.put(line, new ArrayList<>());
                }
            }
        }
        return map;
    }
}
 
class StraightLine {
    private int a;
    private int b;
    private int c;
 
    public StraightLine(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
 
    public String getPointIntersectionWithX() {
        return String.format("{%.2f, 0}",  -this.c /  this.a);
    }
 
    public String getPointIntersectionWithY() {
        return String.format("{0, %.2f}", -this.c / this.b);
    }
 
    public boolean isParallel(StraightLine line) {
        double coeffOne =  this.a /  line.a;
        double coeffTwo =  this.b /  line.b;
        double coeffThree =  this.c / line.c;
        return coeffOne == coeffTwo && coeffOne != coeffThree;
    }
 
    public boolean isEquals(StraightLine line) {
        double coeffOne =  this.a /  line.a;
        double coeffTwo =  this.b /  line.b;
        double coeffThree =  this.c / line.c;
        return coeffOne == coeffTwo && coeffOne == coeffThree;
    }
 
    public String getPointIntersectionLines(StraightLine line) {
        String result = null;
        if (line != null) {
            if (isEquals(line)) {
                result = "Прямые равны. Имеют бесконечное множество точек пересечения.";
            } else if (isParallel(line)) {
                result = "Прямые параллельны. Точек пересечения нет.";
            } else {
                double y = (line.a * this.c - this.a * line.c) / (this.a * line.b - line.a * this.b);
                double x = (this.b * y + this.c) / -this.a;
                result = String.format("Точка пересечения: {%.2f, %.2f};", x, y);
            }
        }
        return result;
    }
 
    @Override
    public String toString() {
        String result = getBlock(this.a, "x", true);
        result = result.concat(getBlock(this.b, "y", this.a == 0));
        result = result.concat(getBlock(this.c, "", this.a == 0 && this.b == 0));
        return result.concat(" = 0");
    }
 
    private String getBlock(int number, String prefix, boolean first) {
        String result = "";
        if (number != 0) {
            if (first) {
                result = String.format("%d%s", number, prefix);
            } else {
                String sign = number < 0 ? "-" : "+";
                result = String.format(" %s %d%s", sign, Math.abs(number), prefix);
            }
        }
        return result;
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2021, 11:13
Ответы с готовыми решениями:

Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат
Можете помочь с прогой, без использования сверхумных схем? Самым простым уровнем знания java. import java.util.ArrayList; import...

Определить класс Прямая на плоскости (пространстве)
Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат. Определить кориннаты...

Найти точки пересечения прямой с осями координат
Найти точки пересечения прямой a * x + b * y + c = 0 с осями координат, или выдать соответствующее сообщение, если они не пересекаются ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2021, 11:13
Помогаю со студенческими работами здесь

Определить класс Прямая в пространстве
Помогите написать код для задачи, самым простым способом. Определить класс Прямая плоскость (пространстве). Определить точки...

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

Определить площадь прямоугольника, ограниченного координатами точки и осями координат
Точка на плоскости: координаты точки на плоскости (по горизонтали и верти- кали) x1 и y1 Определить площадь пря- моугольника,...

Написать уравнение прямой, если прямая параллельна прямой х-5у=0 и образует с осями координат треугольник
Написать уравнение прямой, если прямая параллельна прямой х-5у=0 и образует с осями координат треугольник, площадь которого равна 7.

Найти точки пересечения с осями графика функции. Определить как измениться напряжение в элементе
Я новичек в маткаде, а нам в универе дали задания по нему, что то я смог сам решить, а два задания нет, прошу у вас помощи. 1) Решить...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru