diff --git a/task01/src/com/example/task01/Point.java b/task01/src/com/example/task01/Point.java index ec5c69e8..49b304e2 100644 --- a/task01/src/com/example/task01/Point.java +++ b/task01/src/com/example/task01/Point.java @@ -1,14 +1,38 @@ package com.example.task01; -/** - * Класс точки на плоскости - */ -public class Point { +public class Point +{ int x; int y; - void print() { + public Point() + { + x = 0; + y = 0; + } + + 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(distY + distX); //d=√(Xb-Xa)^2+(Yb-Ya)^2) + } + + 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/task02/src/com/example/task02/TimeSpan.java b/task02/src/com/example/task02/TimeSpan.java new file mode 100644 index 00000000..ab570ee9 --- /dev/null +++ b/task02/src/com/example/task02/TimeSpan.java @@ -0,0 +1,75 @@ +package com.example.task02; + +public class TimeSpan +{ + private int hours; + private int minutes; + private int seconds; + + public TimeSpan(int hours, int minutes, int seconds) + { + this.hours = hours; + this.minutes = minutes; + this.seconds = seconds; + correctTime(); + } + public int getHours() + { + return hours; + } + + public int getMinutes() + { + return minutes; + } + + public int getSeconds() + { + return seconds; + } + + public void setHours(int hours) + { + this.hours = hours; + correctTime(); + } + + public void setMinutes(int minutes) + { + this.minutes = minutes; + correctTime(); + } + + public void setSeconds(int seconds) + { + this.seconds = seconds; + correctTime(); + } + + private void correctTime() + { + int totalSecond = hours * 3600 + minutes * 60 + seconds; + this.hours = totalSecond / 3600; + this.minutes = (totalSecond % 3600) / 60; + this.seconds = (totalSecond % 3600) % 60; + } + + void add(TimeSpan time) + { + this.hours += time.hours; + this.minutes += time.minutes; + this.seconds += time.seconds; + correctTime(); + } + + void subtract(TimeSpan time) { + this.hours -= time.hours; + this.minutes -= time.minutes; + this.seconds -= time.seconds; + correctTime(); + } + + public String toString() { + return hours + ":" + minutes + ":" + seconds; + } +} \ No newline at end of file diff --git a/task03/src/com/example/task03/ComplexN.java b/task03/src/com/example/task03/ComplexN.java new file mode 100644 index 00000000..632510b7 --- /dev/null +++ b/task03/src/com/example/task03/ComplexN.java @@ -0,0 +1,47 @@ +package com.example.task03; + +public class ComplexN +{ + private final double realPart; + private final double imaginaryPart; + + public ComplexN(double realPart, double imaginaryPart) + { + this.realPart = realPart; + this.imaginaryPart = imaginaryPart; + } + + public double getRealPart() + { + return realPart; + } + + public double getImaginaryPart() + { + return imaginaryPart; + } + + public ComplexN add(ComplexN complexNumber) + { + double real = this.realPart + complexNumber.realPart; + double imaginary = this.imaginaryPart + complexNumber.imaginaryPart; + return new ComplexN(real, imaginary); + } + + public ComplexN multiply(ComplexN complexNumber) //по формуле (a1+b1*i)(a2+b2*i)=(a1a2-b1b2)+(a1b2+a2b1)i + { + double real = this.realPart * complexNumber.realPart - this.imaginaryPart * complexNumber.imaginaryPart; + double imaginary = this.realPart * complexNumber.imaginaryPart + this.imaginaryPart * complexNumber.realPart; + return new ComplexN(real, imaginary); + } + + @Override + public String toString() //для вывода на экран в стандартной форме + { + if (imaginaryPart >= 0) + { + return realPart + "+" + imaginaryPart + "i"; + } + return realPart + "-" + (-imaginaryPart) + "i"; + } +} \ No newline at end of file diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index ae40e6f2..42468add 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -1,7 +1,14 @@ package com.example.task03; -public class Task03Main { - public static void main(String[] args) { - +public class Task03Main +{ + public static void main(String[] args) + { + ComplexN z1 = new ComplexN(1, 2); + ComplexN z2 = new ComplexN(-5, 3); + System.out.println(z1); //1+2i + System.out.println(z2); //-5+3i + System.out.println(z1.add(z2)); //-4+5i + System.out.println(z1.multiply(z1)); //-3+4i } -} +} \ No newline at end of file diff --git a/task04/src/com/example/task04/Line.java b/task04/src/com/example/task04/Line.java new file mode 100644 index 00000000..06db96f9 --- /dev/null +++ b/task04/src/com/example/task04/Line.java @@ -0,0 +1,34 @@ +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("(%d, %d), (%d, %d)", p1.x, p1.y, p2.x, p2.y); + } + + public boolean isCollinearLine(Point p) + { + return ((p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y)) == 0; + } +} \ 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..8aafe5d4 --- /dev/null +++ b/task04/src/com/example/task04/Point.java @@ -0,0 +1,38 @@ +package com.example.task04; + +public class Point +{ + final int x; + final int y; + + 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(distY + distX); //d=√(Xb-Xa)^2+(Yb-Ya)^2) + } + + 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/task05/src/com/example/task05/Point.java b/task05/src/com/example/task05/Point.java index 968ea652..bc5de830 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 { +public class Point +{ + private final double x; + private final double y; - /** - * Конструктор, инициализирующий координаты точки - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат - */ - public Point(double x, double y) { - throw new AssertionError(); + public Point(double x, double y) + { + this.x = x; + this.y = y; } - /** - * Возвращает координату точки по оси абсцисс - * - * @return координату точки по оси X - */ - public double getX() { - // TODO: реализовать - throw new AssertionError(); + public double getX() + { + return x; } - /** - * Возвращает координату точки по оси ординат - * - * @return координату точки по оси Y - */ - public double getY() { - // TODO: реализовать - throw new AssertionError(); + public double getY() + { + return y; } - /** - * Подсчитывает расстояние от текущей точки до точки, переданной в качестве параметра - * - * @param point вторая точка отрезка - * @return расстояние от текущей точки до переданной - */ - public double getLength(Point point) { - // TODO: реализовать - throw new AssertionError(); + public double getLength(Point point) + { + double a = Math.pow(x - point.x, 2); + double b = Math.pow(y - point.y, 2); + return Math.sqrt(a + b); } - -} +} \ 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..831be1c4 100644 --- a/task05/src/com/example/task05/PolygonalLine.java +++ b/task05/src/com/example/task05/PolygonalLine.java @@ -1,46 +1,37 @@ package com.example.task05; +import java.util.ArrayList; -/** - * Ломаная линия - */ -public class PolygonalLine { +public class PolygonalLine +{ + private ArrayList line = new ArrayList(); - /** - * Устанавливает точки ломаной линии - * - * @param points массив точек, которыми нужно проинициализировать ломаную линию - */ - public void setPoints(Point[] points) { - // TODO: реализовать + public void setPoints(Point[] points) + { + for (Point point : points) + { + addPoint(point); + } } - /** - * Добавляет точку к ломаной линии - * - * @param point точка, которую нужно добавить к ломаной - */ - public void addPoint(Point point) { - // TODO: реализовать + public void addPoint(Point point) + { + line.add(new Point(point.getX(), point.getY())); } - /** - * Добавляет точку к ломаной линии - * - * @param x координата по оси абсцисс - * @param y координата по оси ординат - */ - public void addPoint(double x, double y) { - // TODO: реализовать + public void addPoint(double x, double y) + { + line.add(new Point(x, y)); } - /** - * Возвращает длину ломаной линии - * - * @return длину ломаной линии - */ - public double getLength() { - // TODO: реализовать - throw new AssertionError(); + public double getLength() + { + double length = 0; + for (int i = 0; i < line.size() - 1; i++) + { + Point first = line.get(i); + Point second = line.get(i+1); + length += first.getLength(second); //длина ломаной = сумма расстояний между соседними точками + } + return length; } - -} +} \ No newline at end of file