diff --git a/task01/src/com/example/task01/Point.java b/task01/src/com/example/task01/Point.java index ec5c69e8..a5bafc54 100644 --- a/task01/src/com/example/task01/Point.java +++ b/task01/src/com/example/task01/Point.java @@ -4,11 +4,32 @@ * Класс точки на плоскости */ public class Point { + int x; int y; + public Point() { + this.x = x; + this.y = y; + } + public void flip() { + int temp = this.x; + this.x = -this.y; + this.y= -temp; + } + + public double distance(Point point) { + int tempX = this.x - point.x; + int tempY = this.y - point.y; + return Math.sqrt(Math.pow(tempX, 2) + Math.pow(tempY, 2)); //По теореме Пифагора + } + + public String toString() { + return "(" + 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/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 644a0eba..35180978 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -2,6 +2,27 @@ public class Task02Main { public static void main(String[] args) { + TimeSpan span1 = new TimeSpan (1, 50, 7); + TimeSpan span2 = new TimeSpan (0, 76, 100); + TimeSpan span3 = new TimeSpan (0, 61, 95); + TimeSpan span4 = new TimeSpan (0, 0, 1); + System.out.println("Интервал 1: " + span1); + System.out.println("Интервал 2: " + span2); + System.out.println("Интервал 3: " + span3); + System.out.println("Интервал 4: " + span4); + + span1.add(span2); + System.out.println("После сложения 1 + 2: " + span1); + + span3.subtract(span4); + System.out.println("После вычитания 3 - 4: " + span3); + + System.out.println("Часы: " + span1.getHours()); + System.out.println("Минуты: " + span1.getMin()); + System.out.println("Секунды: " + span1.getSec()); + + span1.setMin(70); + System.out.println("После сеттера: " + span1); } } diff --git a/task02/src/com/example/task02/TimeSpan.java b/task02/src/com/example/task02/TimeSpan.java new file mode 100644 index 00000000..6f51545a --- /dev/null +++ b/task02/src/com/example/task02/TimeSpan.java @@ -0,0 +1,84 @@ +package com.example.task02; + +public class TimeSpan { + //Поля класса + private int hSpan; + private int mSpan; + private int sSpan; + + //Конструктор + public TimeSpan(int hSpan, int mSpan, int sSpan) { + this.hSpan = hSpan; + this.mSpan = mSpan; + this.sSpan = sSpan; + normalize(); + } + + //Геттеры + public Integer getHours() { + return hSpan; + } + + public Integer getMin() { + return mSpan; + } + + public Integer getSec() { + return sSpan; + } + + //Сеттеры + public void setHours(int hSpan) { + this.hSpan = hSpan; + } + + public void setMin(int hSpan) { + this.mSpan = hSpan; + } + + public void setSec(int hSpan) { + this.sSpan = hSpan; + } + + //Добавляет к текущему интервалу значение переданного интервала в минутах + public void add(TimeSpan time) { + this.hSpan += time.hSpan; + this.mSpan += time.mSpan; + this.sSpan += time.sSpan; + normalize(); + } + + void subtract(TimeSpan time) { + int tempTime1 = this.hSpan * 3600 + this.mSpan * 60 + this.sSpan; + int tempTime2 = time.hSpan * 3600 + time.mSpan * 60 + time.sSpan; + + int difference = tempTime1 - tempTime2; + + if (difference <= 0) { + this.hSpan = 0; + this.mSpan = 0; + this.sSpan = 0; + } else { + this.hSpan = difference / 3600; + this.mSpan = (difference % 3600) / 60; + this.sSpan = difference % 60; + } + } + + public String toString() { + normalize(); + return String.format("%02d:%02d:%02d", hSpan, mSpan, sSpan); + } + + private void normalize() { + if (sSpan >= 60) { + mSpan += sSpan / 60; + sSpan = sSpan % 60; + } + else if (mSpan >= 60) { + hSpan += mSpan / 60; + mSpan = mSpan % 60; + } + } + +} diff --git a/task03/src/com/example/task03/ComplexNumber.java b/task03/src/com/example/task03/ComplexNumber.java new file mode 100644 index 00000000..910153ea --- /dev/null +++ b/task03/src/com/example/task03/ComplexNumber.java @@ -0,0 +1,38 @@ +package com.example.task03; + +public class ComplexNumber { + + private final double realPart; + private final double imaginaryPart; + + public ComplexNumber(double realPart, double imaginaryPart) { + this.realPart = realPart; + this.imaginaryPart = imaginaryPart; + } + + public double getRealPart() { + return realPart; + } + + public double getImaginaryPart() { + return imaginaryPart; + } + + public ComplexNumber add(ComplexNumber other) { + double newReal = this.realPart + other.realPart; + double newImaginary = this.imaginaryPart + other.imaginaryPart; + return new ComplexNumber(newReal, newImaginary); + } + + public ComplexNumber multiply(ComplexNumber other) { + // (a + bi) * (c + di) = (ac - bd) + (ad + bc)i + double newReal = this.realPart * other.realPart - this.imaginaryPart * other.imaginaryPart; + double newImaginary = this.realPart * other.imaginaryPart + this.imaginaryPart * other.realPart; + return new ComplexNumber(newReal, newImaginary); + } + + public String toString() { + if (imaginaryPart >= 0) return realPart + "+" + imaginaryPart + "i"; + else return realPart + " - " + Math.abs(imaginaryPart) + "i"; + } +} diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index ae40e6f2..304c22b0 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -2,6 +2,10 @@ public class Task03Main { public static void main(String[] args) { + ComplexNumber num1 = new ComplexNumber(1, 6); + ComplexNumber num2 = new ComplexNumber(-3, 2); + System.out.println("Сложение: " + num1.add(num2)); + System.out.println("Умножение: " + num1.multiply(num2)); } } diff --git a/task04/src/com/example/task04/Line.java b/task04/src/com/example/task04/Line.java new file mode 100644 index 00000000..487dc055 --- /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; + } + + public String toString() { + return "Отрезок от" + p1 + "до " + p2; + } + + //(y₃ - y₁) × (x₂ - x₁) = (x₃ - x₁) × (y₂ - y₁), где A(x1, y1) и B(x2, y2) точки прямой, а C(x3, y3) точка, которую надо проверить + public boolean isCollinearLine(Point p){ + return ((p.getY() - p1.getY()) * (p2.getX() - p1.getX())) == ((p.getX() - p1.getX()) * (p2.getY() - p1.getY())); + } +} diff --git a/task04/src/com/example/task04/Point.java b/task04/src/com/example/task04/Point.java new file mode 100644 index 00000000..9f79b2ab --- /dev/null +++ b/task04/src/com/example/task04/Point.java @@ -0,0 +1,37 @@ +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; + } + + public double distance(Point point) { + int tempX = this.x - point.x; + int tempY = this.y - point.y; + return Math.sqrt(Math.pow(tempX, 2) + Math.pow(tempY, 2)); //По теореме Пифагора + } + + public String ToString() { + return "(" + x + ", " + y + ")"; + } + + void print() { + String pointToString = String.format("(%d, %d)", x, y); + System.out.println(pointToString); + } +} diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 55917a30..c8b944a2 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -2,6 +2,12 @@ public class Task04Main { public static void main(String[] args) { + Point p1 = new Point(3, 3); + Point p2 = new Point(1, 1); + Point p3 = new Point(2, 2); + Line line = new Line(p1, p2); + + System.out.println(line.isCollinearLine(p3)); } } diff --git a/task05/src/com/example/task05/Point.java b/task05/src/com/example/task05/Point.java index 968ea652..0b677561 100644 --- a/task05/src/com/example/task05/Point.java +++ b/task05/src/com/example/task05/Point.java @@ -1,49 +1,30 @@ package com.example.task05; -/** - * Точка в двумерном пространстве - */ public class Point { - /** - * Конструктор, инициализирующий координаты точки - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат - */ + private final int x; + private final int y; + public Point(double x, double y) { - throw new AssertionError(); + this.x = (int) Math.round(x); + this.y = (int) Math.round(y); } - /** - * Возвращает координату точки по оси абсцисс - * - * @return координату точки по оси X - */ public double getX() { - // TODO: реализовать - throw new AssertionError(); + return x; } - /** - * Возвращает координату точки по оси ординат - * - * @return координату точки по оси Y - */ public double getY() { - // TODO: реализовать - throw new AssertionError(); + return y; } - /** - * Подсчитывает расстояние от текущей точки до точки, переданной в качестве параметра - * - * @param point вторая точка отрезка - * @return расстояние от текущей точки до переданной - */ public double getLength(Point point) { - // TODO: реализовать - throw new AssertionError(); + double deltaX = this.x - point.x; + double deltaY = this.y - point.y; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); } -} + public String toString() { + return "(" + x + ", " + y + ")"; + } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/PolygonalLine.java b/task05/src/com/example/task05/PolygonalLine.java index b534bfd5..46775cff 100644 --- a/task05/src/com/example/task05/PolygonalLine.java +++ b/task05/src/com/example/task05/PolygonalLine.java @@ -1,46 +1,49 @@ package com.example.task05; -/** - * Ломаная линия - */ +import java.util.ArrayList; +import java.util.List; + public class PolygonalLine { - /** - * Устанавливает точки ломаной линии - * - * @param points массив точек, которыми нужно проинициализировать ломаную линию - */ + private final List points; + + public PolygonalLine() { + points = new ArrayList<>(); + } public void setPoints(Point[] points) { - // TODO: реализовать + this.points.clear(); + if (points != null) { + for (Point point : points) { + this.points.add(point); + } + } } - /** - * Добавляет точку к ломаной линии - * - * @param point точка, которую нужно добавить к ломаной - */ public void addPoint(Point point) { - // TODO: реализовать + if (point != null) points.add(point); } - /** - * Добавляет точку к ломаной линии - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат - */ public void addPoint(double x, double y) { - // TODO: реализовать + points.add(new Point(x, y)); } - /** - * Возвращает длину ломаной линии - * - * @return длину ломаной линии - */ public double getLength() { - // TODO: реализовать - throw new AssertionError(); + if (points.size() < 2) return 0.0; + + double totalLenght = 0.0; + for (int i=0; i