From 0b0c398ccc1f6ef9c4de8e095f58a42443322ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D1=8F=20=D0=92=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D1=86=D0=BE=D0=B2=D0=B0?= Date: Mon, 6 Oct 2025 09:34:00 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task01/src/com/example/task01/Point.java | 27 ++++++++ task02/src/com/example/task02/Task02Main.java | 7 +- task02/src/com/example/task02/TimeSpan.java | 66 +++++++++++++++++++ task03/src/com/example/task03/Complex.java | 41 ++++++++++++ task03/src/com/example/task03/Task03Main.java | 7 ++ task04/src/com/example/task04/Line.java | 38 +++++++++++ task04/src/com/example/task04/Point.java | 48 ++++++++++++++ task04/src/com/example/task04/Task04Main.java | 15 +++++ task05/src/com/example/task05/Point.java | 17 +++-- .../src/com/example/task05/PolygonalLine.java | 33 ++++++++-- 10 files changed, 286 insertions(+), 13 deletions(-) create mode 100644 task02/src/com/example/task02/TimeSpan.java create mode 100644 task03/src/com/example/task03/Complex.java create mode 100644 task04/src/com/example/task04/Line.java create mode 100644 task04/src/com/example/task04/Point.java diff --git a/task01/src/com/example/task01/Point.java b/task01/src/com/example/task01/Point.java index ec5c69e8..111059e0 100644 --- a/task01/src/com/example/task01/Point.java +++ b/task01/src/com/example/task01/Point.java @@ -7,6 +7,33 @@ public class Point { int x; int y; + public Point(){ + x = 0; + y = 0; + } + + public Point(int x, int y){ + this.x = x; + this.y = y; + } + + void flip(){ + int temp = x; + x = -y; + y = -temp; + } + + double distance(Point point){ + double distX = Math.pow(x - point.x, 2); + double distY = Math.pow(y - point.y, 2); + return Math.sqrt(distX + distY); + } + + public String toString(){ + return String.format("%d, %d", x, y); + } + + void print() { String pointToString = String.format("(%d, %d)", x, y); System.out.println(pointToString); diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 644a0eba..c6651b1e 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -2,6 +2,11 @@ public class Task02Main { public static void main(String[] args) { - + TimeSpan time1 = new TimeSpan(353, 255, 1); + TimeSpan time2 = new TimeSpan(600, 120, 2); + time1.add(time2); + System.out.println(time1.toString()); + time1.setSeconds(60); + System.out.println(time1.toString()); } } diff --git a/task02/src/com/example/task02/TimeSpan.java b/task02/src/com/example/task02/TimeSpan.java new file mode 100644 index 00000000..bcc2ba36 --- /dev/null +++ b/task02/src/com/example/task02/TimeSpan.java @@ -0,0 +1,66 @@ +package com.example.task02; + +public class TimeSpan { + private int timeSec; + private int timeMin; + private int timeHour; + + public TimeSpan(int timeSec, int timeMin, int timeHour){ + this.timeSec = timeSec; + this.timeMin = timeMin; + this.timeHour = timeHour; + correctTime(); + } + + public int getTimeSec(){ + return timeSec; + } + + public int getTimeMin(){ + return timeMin; + } + + public int getTimeHour(){ + return timeHour; + } + + public void setSeconds(int timeSec){ + this.timeSec = timeSec; + correctTime(); + } + + public void setMins(int timeMin){ + this.timeMin = timeMin; + correctTime(); + } + + public void setHours(int timeHour){ + this.timeHour = timeHour; + correctTime(); + } + + void add(TimeSpan time){ + this.timeSec += time.timeSec; + this.timeMin += time.timeMin; + this.timeHour += time.timeHour; + correctTime(); + } + + void subtract(TimeSpan time){ + this.timeSec -= time.timeSec; + this.timeMin -= time.timeMin; + this.timeHour -= time.timeHour; + correctTime(); + } + + void correctTime(){ + int totalSec = timeHour * 3600 + timeMin * 60 + timeSec; + timeHour = totalSec / 3600; + timeMin = (totalSec % 3600) / 60; + timeSec = (totalSec % 3600) % 60; + } + @Override + public String toString(){ + return timeHour + ":" + timeMin + ":" + timeSec; + } +} diff --git a/task03/src/com/example/task03/Complex.java b/task03/src/com/example/task03/Complex.java new file mode 100644 index 00000000..02802f88 --- /dev/null +++ b/task03/src/com/example/task03/Complex.java @@ -0,0 +1,41 @@ +package com.example.task03; + +public class Complex { + private double real; + private double imaginary; + + public Complex(double real, double imaginary){ + this.real = real; + this.imaginary = imaginary; + } + + public double getReal(){ + return real; + } + + public double getImaginary() { + return imaginary; + } + + public Complex add(Complex other) { + double newReal = this.real + other.real; + double newImaginary = this.imaginary + other.imaginary; + return new Complex(newReal, newImaginary); + } + + public Complex multiply(Complex other) { + // (a + bi) * (c + di) = (ac - bd) + (ad + bc)i + double newReal = this.real * other.real - this.imaginary * other.imaginary; + double newImaginary = this.real * other.imaginary + this.imaginary * other.real; + return new Complex(newReal, newImaginary); + } + + @Override + public String toString() { + if (imaginary >= 0) { + return real + " + " + imaginary + "i"; + } else { + return real + " - " + Math.abs(imaginary) + "i"; + } + } +} diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index ae40e6f2..1dc31a8a 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -2,6 +2,13 @@ public class Task03Main { public static void main(String[] args) { + Complex num1 = new Complex(3, 2); // 3 + 2i + Complex num2 = new Complex(1, -4); // 1 - 4i + Complex sum = num1.add(num2); + System.out.println("Сумма: " + num1 + " + " + num2 + " = " + sum); + + Complex product = num1.multiply(num2); + System.out.println("Произведение: " + num1 + " * " + num2 + " = " + product); } } diff --git a/task04/src/com/example/task04/Line.java b/task04/src/com/example/task04/Line.java new file mode 100644 index 00000000..3bf93699 --- /dev/null +++ b/task04/src/com/example/task04/Line.java @@ -0,0 +1,38 @@ +package com.example.task04; + +public class Line { + private final Point p1; + private final Point p2; + + public Line(Point p1, Point p2) { + this.p1 = p1; + this.p2 = p2; + } + + public Point getP1() { + return p1; + } + + public Point getP2() { + return p2; + } + + public double length() { + return p1.distance(p2); + } + + public boolean isCollinearLine(Point p) { + // точки коллинеарны, если площадь треугольника равна 0 + // Если S = 0, то точки лежат на одной прямой + + double area = (p2.getX() - p1.getX()) * (p.getY() - p1.getY()) + - (p.getX() - p1.getX()) * (p2.getY() - p1.getY()); + + return Math.abs(area) < 1e-10; + } + + @Override + public String toString() { + return "Line from " + p1 + " to " + p2; + } +} \ No newline at end of file diff --git a/task04/src/com/example/task04/Point.java b/task04/src/com/example/task04/Point.java new file mode 100644 index 00000000..07a25bd7 --- /dev/null +++ b/task04/src/com/example/task04/Point.java @@ -0,0 +1,48 @@ +package com.example.task04; + +public class Point { + private final int x; + private final int y; + + public Point(){ + x = 0; + y = 0; + } + + public Point(int x, int y){ + this.x = x; + this.y = y; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + double distance(Point point){ + double distX = Math.pow(x - point.x, 2); + double distY = Math.pow(y - point.y, 2); + return Math.sqrt(distX + distY); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Point point = (Point) obj; + return Double.compare(point.x, x) == 0 && Double.compare(point.y, y) == 0; + } + + public String toString(){ + return String.format("%d, %d", x, y); + } + + + void print() { + String pointToString = String.format("(%d, %d)", x, y); + System.out.println(pointToString); + } +} \ No newline at end of file diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 55917a30..446c37a9 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -2,6 +2,21 @@ public class Task04Main { public static void main(String[] args) { + Point point1 = new Point(0, 0); + Point point2 = new Point(3, 3); + Point point3 = new Point(1, 1); + Point point4 = new Point(1, 2); + Line line = new Line(point1, point2); + + System.out.println(line); + System.out.println("Длина отрезка: " + line.length()); + System.out.println("Точка " + point3 + " лежит на прямой: " + line.isCollinearLine(point3)); + System.out.println("Точка " + point4 + " лежит на прямой: " + line.isCollinearLine(point4)); + + Point point5 = new Point(2, 2); + Point point6 = new Point(4, 3); + System.out.println("Точка " + point5 + " лежит на прямой: " + line.isCollinearLine(point5)); + System.out.println("Точка " + point6 + " лежит на прямой: " + line.isCollinearLine(point6)); } } diff --git a/task05/src/com/example/task05/Point.java b/task05/src/com/example/task05/Point.java index 968ea652..59b99da1 100644 --- a/task05/src/com/example/task05/Point.java +++ b/task05/src/com/example/task05/Point.java @@ -11,8 +11,12 @@ public class Point { * @param x координата по оси абсцисс * @param y координата по оси ординат */ + private final double x; + private final double y; + public Point(double x, double y) { - throw new AssertionError(); + this.x = x; + this.y = y; } /** @@ -21,8 +25,7 @@ public Point(double x, double y) { * @return координату точки по оси X */ public double getX() { - // TODO: реализовать - throw new AssertionError(); + return x; } /** @@ -31,8 +34,7 @@ public double getX() { * @return координату точки по оси Y */ public double getY() { - // TODO: реализовать - throw new AssertionError(); + return y; } /** @@ -42,8 +44,9 @@ public double getY() { * @return расстояние от текущей точки до переданной */ public double getLength(Point point) { - // TODO: реализовать - throw new AssertionError(); + double distX = Math.pow(x - point.x, 2); + double distY = Math.pow(y - point.y, 2); + return Math.sqrt(distX + distY); } } diff --git a/task05/src/com/example/task05/PolygonalLine.java b/task05/src/com/example/task05/PolygonalLine.java index b534bfd5..a703618a 100644 --- a/task05/src/com/example/task05/PolygonalLine.java +++ b/task05/src/com/example/task05/PolygonalLine.java @@ -1,17 +1,28 @@ package com.example.task05; +import java.util.ArrayList; + /** * Ломаная линия */ public class PolygonalLine { + private java.util.ArrayList points; + public PolygonalLine(){ + points = new ArrayList<>(); + } /** * Устанавливает точки ломаной линии * * @param points массив точек, которыми нужно проинициализировать ломаную линию */ public void setPoints(Point[] points) { - // TODO: реализовать + this.points = new ArrayList<>(); + if (points != null){ + for (Point point : points){ + this.points.add(new Point(point.getX(), point.getY())); + } + } } /** @@ -20,7 +31,9 @@ public void setPoints(Point[] points) { * @param point точка, которую нужно добавить к ломаной */ public void addPoint(Point point) { - // TODO: реализовать + if (point != null) { + points.add(new Point(point.getX(), point.getY())); + } } /** @@ -30,7 +43,7 @@ public void addPoint(Point point) { * @param y координата по оси ординат */ public void addPoint(double x, double y) { - // TODO: реализовать + points.add(new Point(x, y)); } /** @@ -39,8 +52,18 @@ public void addPoint(double x, double y) { * @return длину ломаной линии */ public double getLength() { - // TODO: реализовать - throw new AssertionError(); + if (points.size() < 2) { + return 0.0; + } + + double totalLength = 0.0; + for (int i = 0; i < points.size() - 1; i++) { + Point current = points.get(i); + Point next = points.get(i + 1); + totalLength += current.getLength(next); + } + + return totalLength; } }