From 9dd2814b3f8ae1d3c1d79c00e49df0ffdf4b475a Mon Sep 17 00:00:00 2001 From: EgorGoryachev <102716070+EgorGoryachev@users.noreply.github.com> Date: Fri, 4 Oct 2024 02:46:14 +0500 Subject: [PATCH] Work --- task01/src/com/example/task01/Point.java | 21 +++- task01/src/com/example/task01/Task01Main.java | 8 +- task02/src/com/example/task02/Task02Main.java | 4 +- task02/src/com/example/task02/TimeSpan.java | 95 +++++++++++++++++++ .../src/com/example/task03/ComplexNumber.java | 28 ++++++ task03/src/com/example/task03/Task03Main.java | 9 ++ task04/src/com/example/task04/Line.java | 29 ++++++ task04/src/com/example/task04/Point.java | 24 +++++ task04/src/com/example/task04/Task04Main.java | 11 +++ task05/src/com/example/task05/Point.java | 15 ++- .../src/com/example/task05/PolygonalLine.java | 29 ++++-- task05/src/com/example/task05/Task05Main.java | 14 +++ 12 files changed, 262 insertions(+), 25 deletions(-) create mode 100644 task02/src/com/example/task02/TimeSpan.java create mode 100644 task03/src/com/example/task03/ComplexNumber.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..8a2c6295 100644 --- a/task01/src/com/example/task01/Point.java +++ b/task01/src/com/example/task01/Point.java @@ -1,14 +1,27 @@ package com.example.task01; -/** - * Класс точки на плоскости - */ public class Point { int x; int y; - void print() { + public Point(int x, int y) { + this.x = x; + this.y = y; + } + + public void print() { String pointToString = String.format("(%d, %d)", x, y); System.out.println(pointToString); } + public void flip(){ + int temp = this.x; + this.x = -this.y; + this.y = -temp; + } + public double distance(Point point){ + return Math.sqrt(Math.pow(point.x - this.x, 2) + Math.pow(point.y - this.y, 2)); + } + public String toString(){ + return String.format("(%d, %d)", x, y); + } } diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index 7d71173a..454bdacf 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -2,13 +2,15 @@ public class Task01Main { public static void main(String[] args) { - Point p1 = new Point(); - p1.x = 10; + Point p1 = new Point(-20,0); + p1.x = -10; p1.y = 45; - Point p2 = new Point(); + Point p2 = new Point(0,0); p2.x = 78; p2.y = 12; + p1.flip(); + System.out.println(p1.x); System.out.println("Point 1:"); p1.print(); System.out.println(p1); diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 644a0eba..fed5922c 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -1,7 +1,9 @@ package com.example.task02; + + public class Task02Main { public static void main(String[] args) { - + TimeSpan T1 = new TimeSpan(1,20,0); } } diff --git a/task02/src/com/example/task02/TimeSpan.java b/task02/src/com/example/task02/TimeSpan.java new file mode 100644 index 00000000..498d4d0c --- /dev/null +++ b/task02/src/com/example/task02/TimeSpan.java @@ -0,0 +1,95 @@ +package com.example.task02; + +public class TimeSpan { + private int hours; + private int minutes; + private int seconds; + + public TimeSpan(int hours, int minutes, int seconds) { + setHours(hours); + setMinutes(minutes); + setSeconds(seconds); + normalize(); + } + + public int getHours() { + return hours; + } + + public void setHours(int hours) { + this.hours = hours; + } + + public int getMinutes() { + return minutes; + } + + public void setMinutes(int minutes) { + this.minutes = minutes; + normalize(); + } + + public int getSeconds() { + return seconds; + } + + public void setSeconds(int seconds) { + this.seconds = seconds; + normalize(); + } + + private void normalize() { + if (seconds >= 60) { + minutes += seconds / 60; + seconds %= 60; + } else if (seconds < 0) { + minutes -= (-seconds + 59) / 60; + seconds = (seconds % 60 + 60) % 60; + } + + if (minutes >= 60) { + hours += minutes / 60; + minutes %= 60; + } else if (minutes < 0) { + hours -= (-minutes + 59) / 60; + minutes = (minutes % 60 + 60) % 60; + } + + if (hours < 0) { + hours = 0; + } + } + + public void add(TimeSpan time) { + this.hours += time.getHours(); + this.minutes += time.getMinutes(); + this.seconds += time.getSeconds(); + normalize(); + } + + public void subtract(TimeSpan time) { + this.hours -= time.getHours(); + this.minutes -= time.getMinutes(); + this.seconds -= time.getSeconds(); + normalize(); + } + + @Override + public String toString() { + return String.format("%02d:%02d:%02d", hours, minutes, seconds); + } + + public static void main(String[] args) { + TimeSpan t1 = new TimeSpan(1, 70, 120); + TimeSpan t2 = new TimeSpan(0, 30, 50); + + System.out.println("Первый интервал: " + t1); + System.out.println("Второй интервал: " + t2); + + t1.add(t2); + System.out.println("После сложения: " + t1); + + t1.subtract(new TimeSpan(2, 15, 30)); + System.out.println("После вычитания: " + t1); + } +} \ No newline at end of file diff --git a/task03/src/com/example/task03/ComplexNumber.java b/task03/src/com/example/task03/ComplexNumber.java new file mode 100644 index 00000000..0cd28045 --- /dev/null +++ b/task03/src/com/example/task03/ComplexNumber.java @@ -0,0 +1,28 @@ +package com.example.task03; + +public class ComplexNumber { + private double real; + private double imaginary; + + public ComplexNumber(double real, double imaginary) { + this.real = real; + this.imaginary = imaginary; + } + + public ComplexNumber add(ComplexNumber other) { + double newReal = this.real + other.real; + double newImaginary = this.imaginary + other.imaginary; + return new ComplexNumber(newReal, newImaginary); + } + + public ComplexNumber multiply(ComplexNumber other) { + double newReal = (this.real * other.real) - (this.imaginary * other.imaginary); + double newImaginary = (this.real * other.imaginary) + (this.imaginary * other.real); + return new ComplexNumber(newReal, newImaginary); + } + + @Override + public String toString() { + return String.format("%.2f + %.2fi", real, imaginary); + } +} diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index ae40e6f2..308fdb53 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -2,6 +2,15 @@ public class Task03Main { public static void main(String[] args) { + ComplexNumber num1 = new ComplexNumber(3, 4); + ComplexNumber num2 = new ComplexNumber(1, 2); + // Вычисляем сумму + ComplexNumber sum = num1.add(num2); + System.out.println("Сумма: " + sum); + + // Вычисляем произведение + ComplexNumber product = num1.multiply(num2); + System.out.println("Произведение: " + 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..f0d13c7a --- /dev/null +++ b/task04/src/com/example/task04/Line.java @@ -0,0 +1,29 @@ +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; + } + + @Override + public String toString() { + return String.format("Line from %s to %s", p1, p2); + } + + public boolean isCollinearLine(Point p) { + return (p2.getY() - p1.getY()) * (p.getX() - p1.getX()) == + (p.getY() - p1.getY()) * (p2.getX() - p1.getX()); + } +} \ 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..d85ebebb --- /dev/null +++ b/task04/src/com/example/task04/Point.java @@ -0,0 +1,24 @@ +package com.example.task04; + +public class Point { + private final int x; + private final int y; + + public Point(int x, int y) { + this.x = x; + this.y = y; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + @Override + public String toString() { + return String.format("(%d, %d)", x, y); + } +} \ 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..39e12fe3 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -2,6 +2,17 @@ public class Task04Main { public static void main(String[] args) { + Point p1 = new Point(0, 0); + Point p2 = new Point(4, 4); + Line line = new Line(p1, p2); + + System.out.println(line); + + Point testPoint = new Point(2, 2); + System.out.println(line.isCollinearLine(testPoint)); // Вывод: true + + Point nonColPoint = new Point(2, 3); + System.out.println(line.isCollinearLine(nonColPoint)); // Вывод: false } } diff --git a/task05/src/com/example/task05/Point.java b/task05/src/com/example/task05/Point.java index 968ea652..9c6c7a01 100644 --- a/task05/src/com/example/task05/Point.java +++ b/task05/src/com/example/task05/Point.java @@ -4,6 +4,8 @@ * Точка в двумерном пространстве */ public class Point { + private double x; + private double y; /** * Конструктор, инициализирующий координаты точки @@ -12,7 +14,8 @@ public class Point { * @param y координата по оси ординат */ public Point(double x, double y) { - throw new AssertionError(); + this.x = x; + this.y = y; } /** @@ -21,8 +24,7 @@ public Point(double x, double y) { * @return координату точки по оси X */ public double getX() { - // TODO: реализовать - throw new AssertionError(); + return x; } /** @@ -31,8 +33,7 @@ public double getX() { * @return координату точки по оси Y */ public double getY() { - // TODO: реализовать - throw new AssertionError(); + return y; } /** @@ -42,8 +43,6 @@ public double getY() { * @return расстояние от текущей точки до переданной */ public double getLength(Point point) { - // TODO: реализовать - throw new AssertionError(); + return Math.sqrt(Math.pow(point.getX() - this.x, 2) + Math.pow(point.getY() - this.y, 2)); } - } diff --git a/task05/src/com/example/task05/PolygonalLine.java b/task05/src/com/example/task05/PolygonalLine.java index b534bfd5..6b82626e 100644 --- a/task05/src/com/example/task05/PolygonalLine.java +++ b/task05/src/com/example/task05/PolygonalLine.java @@ -1,9 +1,15 @@ package com.example.task05; -/** - * Ломаная линия - */ +import java.util.ArrayList; +import java.util.List; + + public class PolygonalLine { + private List points; + + public PolygonalLine() { + points = new ArrayList<>(); + } /** * Устанавливает точки ломаной линии @@ -11,7 +17,10 @@ public class PolygonalLine { * @param points массив точек, которыми нужно проинициализировать ломаную линию */ public void setPoints(Point[] points) { - // TODO: реализовать + this.points.clear(); + for (Point point : points) { + this.points.add(new Point(point.getX(), point.getY())); // Создаем новые экземпляры Point + } } /** @@ -20,7 +29,7 @@ public void setPoints(Point[] points) { * @param point точка, которую нужно добавить к ломаной */ public void addPoint(Point point) { - // TODO: реализовать + points.add(new Point(point.getX(), point.getY())); // Создаем новый экземпляр Point } /** @@ -30,7 +39,7 @@ public void addPoint(Point point) { * @param y координата по оси ординат */ public void addPoint(double x, double y) { - // TODO: реализовать + points.add(new Point(x, y)); } /** @@ -39,8 +48,10 @@ public void addPoint(double x, double y) { * @return длину ломаной линии */ public double getLength() { - // TODO: реализовать - throw new AssertionError(); + double length = 0.0; + for (int i = 0; i < points.size() - 1; i++) { + length += points.get(i).getLength(points.get(i + 1)); + } + return length; } - } diff --git a/task05/src/com/example/task05/Task05Main.java b/task05/src/com/example/task05/Task05Main.java index 4f745fb6..981f48f7 100644 --- a/task05/src/com/example/task05/Task05Main.java +++ b/task05/src/com/example/task05/Task05Main.java @@ -2,6 +2,20 @@ public class Task05Main { public static void main(String[] args) { + Point point1 = new Point(1.0, 2.0); + Point point2 = new Point(4.0, 6.0); + Point point3 = new Point(7.0, 1.0); + PolygonalLine polygonalLine = new PolygonalLine(); + + polygonalLine.addPoint(point1); + polygonalLine.addPoint(point2); + polygonalLine.addPoint(point3); + + System.out.println("Длина ломаной линии: " + polygonalLine.getLength()); + + polygonalLine.addPoint(10.0, 5.0); + + System.out.println("Обновленная длина ломаной линии: " + polygonalLine.getLength()); } }