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

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

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

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

есть код, но он немного работает не так как надо, еще выдает ошибку, помогите пожалуйста)
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2021, 11:13
Ответы с готовыми решениями:

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

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

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

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

0
21.11.2021, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2021, 11:13
Помогаю со студенческими работами здесь

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

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

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

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

Определить, пересекаются ли прямая и окружность, и найти точки пересечения
задана окружность с центром в точке х(нулевое) и(нулевое) у и радиусом Р и прямая у=ах+в....

определить,сколько точек пересечения имеет окружность радиуса R с центром в начале координат и произвольная прямая y=kx+b.
Написать программу, которая сможет определить,сколько точек пересечения имеет окружность радиуса R...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru