Программирование на JavaКак подключить ЯП Java к Windows смотрите здесь Напомню, для того, чтобы запустить Java-программу - надо:
Класс Math2. Задание (Сигнум)В переменной n лежит некоторое вещественное число. Вычислить и вывести на экран значение функции «сигнум» от этого числа (-1, если число отрицательное; 0, если нулевое; 1 если, положительное). public class signum { или public class signum { public static void main(String[] args) { 3. Задание (Площадь и Периметр)В переменных a и b лежат положительные длины катетов прямоугольного треугольника. Вычислить и вывести на экран площадь треугольника и его периметр. public class kateti { public static void main(String[] args) { double a,b,c,s,p; a = 3; b = 4; c = Math.sqrt(a*a+b*b); s = (a*b)/2; p = c+a+b; System.out.println(s+"\n"+p); } } 4. Задание (Количество цифр)Натуральное положительное число записано в переменную n. Определить и вывести на экран, сколько цифр в числе n. public class sifri { public static void main(String[] args) { double n; int a; n = 4; a = (int)(Math.ceil(Math.log10(n)+0.000000000000001)); System.out.println(a); } } Math.random1. ЗаданиеСоздайте программу, которая будет генерировать и выводить на экран вещественное псевдослучайное число из промежутка [-3;3). public class one { public static void main(String[] args) { double c; c = Math.random()*6-3;// - [-3;3) System.out.println(c); } } 2. ЗаданиеНатуральное положительное число записано в переменную n. Создайте программу, которая будет генерировать и выводить на экран целое псевдослучайное число из отрезка [-n;n]. public class two { public static void main(String[] args) { int n,c; n = 10; c = (int)(Math.random()*(2*n+1))-n; System.out.println(c); } } 3. ЗаданиеВ переменные a и b записаны целые числа, при этом b больше a. Создайте программу, которая будет генерировать и выводить на экран целое псевдослучайное число из отрезка [a;b]. public class three { public static void main(String[] args) { double c; int a,b,s; a = 3; b = 10; s = b-a+1; c = (int)(Math.random()*s)+a; System.out.println(c); } } Оператор сравнения if else1. ЗаданиеСоздать программу, проверяющую и сообщающую на экран, является ли целое число записанное в переменную n, чётным либо нечётным. public class one { public static void main(String[] args) { int n; n = 9; if(n%2==0) { System.out.println(n+" - chetnoe chislo"); } else { System.out.println(n+" - nechetnoe chislo"); } } } 2. ЗаданиеСоздать программу, выводящую на экран ближайшее к 10 из двух чисел, записанных в переменные m и n. Например, среди чисел 8,5 и 11,45 ближайшее к десяти 11,45. public class two { 3. ЗаданиеВ три переменные a, b и c записаны три вещественных числа. Создать программу, которая будет находить и выводить на экран вещественные корни квадратного уравнения ax2+bx+c=0, либо сообщать, что корней нет. public class three { Switch Case1. ЗаданиеСоздать программу, которая будет проверять попало ли случайно выбранное из отрезка [5;155] целое число в интервал (25;100) и сообщать результат на экран. public class one { public static void main(String[] args) { int n = (int)(Math.random()*150+5); if(n > 25 && n < 100) { System.out.println("Chislo "+n+" soderjitsa v intervale (25,100)"); } else { System.out.println("Chislo "+n+" ne soderjitsa v intervale (25,100)"); } } } 2. ЗаданиеСоздать программу, выводящую на экран случайно сгенерированное трёхзначное натуральное число и его наибольшую цифру. public class two { public static void main(String[] args) { int n = (int)(Math.random()*900+100),a,b,c; a = n/100; b = (n%100)/10; c = n%10; if(a>=b&&a>=c) { System.out.println("V chisle "+n+" naiboljchaya sifra "+a); } else if(b>=a&&b>=c) { System.out.println("V chisle "+n+" naiboljchaya sifra "+b); } else { System.out.println("V chisle "+n+" naiboljchaya sifra "+c); } } } 3. ЗаданиеВ три переменные a, b и c явно записаны программистом три целых попарно неравных между собой числа. Создать программу, которая переставит числа в переменных таким образом, чтобы при выводе на экран последовательность a, b и c оказалась строго возрастающей. public class three { 4. ЗаданиеНа некотором предприятии инженер Петров создал устройство, на табло которого показывается количество секунд, оставшихся до конца рабочего дня. Когда рабочий день начинается ровно в 9 часов утра — табло отображает «28800» (т.е. остаётся 8 часов), когда времени 14:30 — на табло «9000» (т.е. остаётся два с половиной часа), а когда наступает 17 часов — на табло отображается «0» (т.е. рабочий день закончился). public class four { public static void main(String[] args) { int time = (int)(Math.random()*28800), hours; double trace, tm = (double)time, del = 3600; trace = (double)(tm/del); if(time < 3600) { System.out.println(time+"\n"+trace+"\n"+"Do kontsa rabochego dnya ostalos menee chasa"); } else { hours = (int)(time/3600); System.out.println(time+"\n"+trace+"\n"+"Do kontsa rabochego dnya ostalos "+hours+" chasov"); } } } Потоки ввода/вывода и строки1. ЗаданиеСоздать программу, которая будет сообщать, является ли целое число, введённое пользователем, чётным или нечётным. Если пользователь введёт не целое число, то сообщать ему об ошибке. import java.util.Scanner; 2. ЗаданиеСоздать программу, которая будет вычислять и выводить на экран сумму двух целых чисел, введённых пользователем. Если пользователь некорректно введёт хотя бы одно из чисел, то сообщать об ошибке. import java.util.Scanner; 3. ЗаданиеСоздать программу, которая будет выводить на экран меньшее по модулю из трёх введённых пользователем вещественных чисел. Внимание! Дробную часть числа надо вводить после запятой, а не после точки, например: 2.5 - не верно. 2,5 - верно import java.util.Scanner; 4. ЗаданиеСоздать программу, которая будет проверять, является ли слово из пяти букв, введённое пользователем, палиндромом (примеры: «комок», «ротор»). Если введено слово не из 5 букв, то сообщать об ошибке. Программа должна нормально обрабатывать слово, даже если в нём использованы символы разного регистра. Например, слова «Комок» или «РОТОР» следует также считать палиндромами. Программа работает только с английскими словами import java.util.Scanner; Циклы (игра "Угадайка")
import java.util.Scanner; Циклы (for)1. ЗаданиеСоздайте программу, выводящую на экран все четырёхзначные числа последовательности 1000 1003 1006 1009 1012 1015 …. public class one { 2. ЗаданиеСоздайте программу, выводящую на экран первые 55 элементов последовательности 1 3 5 7 9 11 13 15 17 …. public class two { 3. ЗаданиеСоздайте программу, выводящую на экран все неотрицательные элементы последовательности 90 85 80 75 70 65 60 …. public class three { 4. ЗаданиеСоздайте программу, выводящую на экран первые 20 элементов последовательности 2 4 8 16 32 64 128 …. public class four { 5. ЗаданиеВыведите на экран все члены последовательности 2an-1–1, где a1=2, которые меньше 10000. public class five { 6. ЗаданиеВыведите на экран все двузначные члены последовательности 2an-1+200, где a1= –166. public class six { 7. ЗаданиеСоздайте программу, вычисляющую факториал натурального числа n, которое пользователь введёт с клавиатуры. import java.util.Scanner; 8. ЗаданиеВыведите на экран все положительные делители натурального числа, введённого пользователем с клавиатуры. import java.util.Scanner; 9. ЗаданиеПроверьте, является ли введённое пользователем с клавиатуры натуральное число — простым. Постарайтесь не выполнять лишних действий (например, после того, как вы нашли хотя бы один нетривиальный делитель уже ясно, что число составное и проверку продолжать не нужно). Также учтите, что наименьший делитель натурального числа n, если он вообще имеется, обязательно располагается в отрезке [2; √n]. import java.util.Scanner; 10. ЗаданиеСоздайте программу, выводящую на экран 12 первых элементов последовательности 2an-2–2, где a1=3 и a2=2. public class ten { 11. ЗаданиеВыведите на экран первые 11 членов последовательности Фибоначчи. Напоминаем, что первый и второй члены последовательности равны единицам, а каждый следующий — сумме двух предыдущих. public class eleven { 12. ЗаданиеДля введённого пользователем с клавиатуры натурального числа посчитайте сумму всех его цифр (заранее не известно сколько цифр будет в числе). import java.util.Scanner; 13. ЗаданиеВ городе N проезд в трамвае осуществляется по бумажным отрывным билетам. Каждую неделю трамвайное депо заказывает в местной типографии рулон билетов с номерами от 000001 до 999999. «Счастливым» считается билетик у которого сумма первых трёх цифр номера равна сумме последних трёх цифр, как, например, в билетах с номерами 003102 или 567576. Трамвайное депо решило подарить сувенир обладателю каждого счастливого билета и теперь раздумывает, как много сувениров потребуется. С помощью программы подсчитайте сколько счастливых билетов в одном рулоне? public class thirteen { 14. ЗаданиеВ городе N есть большой склад на котором существует 50000 различных полок. Для удобства работников руководство склада решило заказать для каждой полки табличку с номером от 00001 до 50000 в местной типографии, но когда таблички напечатали, оказалось что печатный станок из-за неисправности не печатал цифру 2, поэтому все таблички, в номерах которых содержалась одна или более двойка (например, 00002 или 20202) — надо перепечатывать. Напишите программу, которая подсчитает сколько всего таких ошибочных табличек оказалось в бракованной партии. public class fourteen { 15. ЗаданиеЭлектронные часы показывают время в формате от 00:00 до 23:59. Подсчитать сколько раз за сутки случается так, что слева от двоеточия показывается симметричная комбинация для той, что справа от двоеточия (например, 02:20, 11:11 или 15:51). public class fiveteen { 16. ЗаданиеВ американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб российской армии решил исключить номера боевой техники, содержащие числа 4 или 13 (например, 40123, 13313, 12345 или 13040), чтобы не смущать иностранных коллег. Если в распоряжении армии имеется 100 тыс. единиц боевой техники и каждая боевая машина имеет номер от 00001 до 99999, то сколько всего номеров придётся исключить? public class sixteen { Массивы1. ЗаданиеСоздайте массив из всех чётных чисел от 2 до 20 и выведите элементы массива на экран сначала в строку, отделяя один элемент от другого пробелом, а затем в столбик (отделяя один элемент от другого началом новой строки). Перед созданием массива подумайте, какого он будет размера. public class one { 2. ЗаданиеСоздайте массив из всех нечётных чисел от 1 до 99, выведите его на экран в строку, а затем этот же массив выведите на экран тоже в строку, но в обратном порядке (99 97 95 93 … 7 5 3 1). public class two { 3. ЗаданиеСоздайте массив из 15 случайных целых чисел из отрезка [0;9]. Выведите массив на экран. Подсчитайте сколько в массиве чётных элементов и выведете это количество на экран на отдельной строке. public class three { 4. ЗаданиеСоздайте массив из 8 случайных целых чисел из отрезка [1;10]. Выведите массив на экран в строку. Замените каждый элемент с нечётным индексом на ноль. Снова выведете массив на экран на отдельной строке. public class four { 5. ЗаданиеСоздайте 2 массива из 5 случайных целых чисел из отрезка [0;5] каждый, выведите массивы на экран в двух отдельных строках. Посчитайте среднее арифметическое элементов каждого массива и сообщите, для какого из массивов это значение оказалось больше (либо сообщите, что их средние арифметические равны). public class five { 6. ЗаданиеСоздайте массив из 4 случайных целых чисел из отрезка [10;99], выведите его на экран в строку. Определить и вывести на экран сообщение о том, является ли массив строго возрастающей последовательностью. public class six { 7. ЗаданиеСоздайте массив из 20-ти первых чисел Фибоначчи и выведите его на экран. Напоминаем, что первый и второй члены последовательности равны единицам, а каждый следующий — сумме двух предыдущих. public class seven { 8. ЗаданиеСоздайте массив из 12 случайных целых чисел из отрезка [-15;15]. Определите какой элемент является в этом массиве максимальным и сообщите индекс его последнего вхождения в массив. public class eight { 9. ЗаданиеСоздайте два массива из 10 целых случайных чисел из отрезка [1;9] и третий массив из 10 действительных чисел. Каждый элемент с i-ым индексом третьего массива должен равняться отношению элемента из первого массива с i-ым индексом к элементу из второго массива с i-ым индексом. Вывести все три массива на экран (каждый на отдельной строке), затем вывести количество целых элементов в третьем массиве. public class nine { 10. ЗаданиеСоздайте массив из 11 случайных целых чисел из отрезка [-1;1], выведите массив на экран в строку. Определите какой элемент встречается в массиве чаще всего и выведите об этом сообщение на экран. Если два каких-то элемента встречаются одинаковое количество раз, то не выводите ничего. public class ten { 11. ЗаданиеПользователь должен указать с клавиатуры чётное положительное число, а программа должна создать массив указанного размера из случайных целых чисел из [-5;5] и вывести его на экран в строку. После этого программа должна определить и сообщить пользователю о том, сумма модулей какой половины массива больше: левой или правой, либо сообщить, что эти суммы модулей равны. Если пользователь введёт неподходящее число, то программа должна требовать повторного ввода до тех пор, пока не будет указано корректное значение. import java.util.Scanner; 12. ЗаданиеПрограмма должна создать массив из 12 случайных целых чисел из отрезка [-10;10] таким образом, чтобы отрицательных и положительных элементов там было поровну и не было нулей. При этом порядок следования элементов должен быть случаен (т. е. не подходит вариант, когда в массиве постоянно выпадает сначала 6 положительных, а потом 6 отрицательных чисел или же когда элементы постоянно чередуются через один и пр.). Вывести полученный массив на экран. public class twelve { 13. ЗаданиеПользователь вводит с клавиатуры натуральное число большее 3, которое сохраняется в переменную n. Если пользователь ввёл не подходящее число, то программа должна просить пользователя повторить ввод. Создать массив из n случайных целых чисел из отрезка [0;n] и вывести его на экран. Создать второй массив только из чётных элементов первого массива, если они там есть, и вывести его на экран. import java.util.Scanner; Многомерные массивы1. ЗаданиеСоздать двумерный массив из 8 строк по 5 столбцов в каждой из случайных целых чисел из отрезка [10;99]. Вывести массив на экран. public class one { 2. ЗаданиеСоздать двумерный массив из 5 строк по 8 столбцов в каждой из случайных целых чисел из отрезка [-99;99]. Вывести массив на экран. После на отдельной строке вывести на экран значение максимального элемента этого массива (его индекс не имеет значения). public class two { 3. ЗаданиеCоздать двумерный массив из 7 строк по 4 столбца в каждой из случайных целых чисел из отрезка [-5;5]. Вывести массив на экран. Определить и вывести на экран индекс строки с наибольшим по модулю произведением элементов. Если таких строк несколько, то вывести индекс первой встретившейся из них. public class three { 4. ЗаданиеСоздать двумерный массив из 6 строк по 7 столбцов в каждой из случайных целых чисел из отрезка [0;9]. Вывести массив на экран. Преобразовать массив таким образом, чтобы на первом месте в каждой строке стоял её наибольший элемент. При этом изменять состав массива нельзя, а можно только переставлять элементы в рамках одной строки. Порядок остальных элементов строки не важен (т.е. можно соврешить только одну перестановку, а можно отсортировать по убыванию каждую строку). Вывести преобразованный массив на экран. public class four { 5. ЗаданиеДля проверки остаточных знаний учеников после летних каникул, учитель младших классов решил начинать каждый урок с того, чтобы задавать каждому ученику пример из таблицы умножения, но в классе 15 человек, а примеры среди них не должны повторяться. В помощь учителю напишите программу, которая будет выводить на экран 15 случайных примеров из таблицы умножения (от 2*2 до 9*9, потому что задания по умножению на 1 и на 10 — слишком просты). При этом среди 15 примеров не должно быть повторяющихся (примеры 2*3 и 3*2 и им подобные пары считать повторяющимися). public class five { Методы в Java1. ЗаданиеСоздать статический метод, который будет иметь два целочисленных параметра a и b, и в качестве своего значения возвращать случайное целое число из отрезка [a;b]. C помощью данного метода заполнить массив из 20 целых чисел и вывести его на экран. public class one { 2. ЗаданиеСоздать метод, который будет выводить указанный массив на экран в строку. С помощью созданного метода и метода из предыдущей задачи заполнить 5 массивов из 10 элементов каждый случайными числами и вывести все 5 массивов на экран, каждый на отдельной строке. public class two { 3. ЗаданиеСоздать метод, который будет сортировать указанный массив по возрастанию любым известным вам способом. public class three { 4. ЗаданиеВ массиве хранится 7 явно заданных текстовых строк. Создать программу, которая отсортирует и выведет на экран строки в алфавитном порядке. Например, если были даны такие строки: public class four { Рекурсия1-3. Задания
public class one { Создание собственных классов в Java (начало)1. ЗаданиеСоздайте в классе Circle метод, вычисляющий длину окружности.целых чисел и вывести его на экран. class Circle { public double x; // абсцисса центра public double y; // ордината центра public double r; // радиус public void printCircle() { System.out.println("Okrujnost s centrom ("+x+";"+y+") i radiusom "+r); } public void moveCircle(double a, double b) { x = x + a; y = y + b; } public void zoomCircle(double r) { this.r = this.r * r; } public Circle() { x = 0.0; y = 0.0; r = 1.0; } public Circle(double a, double b, double s) { x = a; y = b; r = s; } // метод вычисляющий площадь круга public double squareCircle() { double s = Math.PI * r * r; return s; } // метод проверяющий равны ли окружности по площадям public boolean equalsCircle(Circle cir) { if(this.squareCircle() == cir.squareCircle()) { return true; } else { return false; } } //Метод, вычисляющий длину окружности public double lengthCircle() { double l = Math.PI*2*r; return l; } } public class one { public static void sop(String a) { System.out.println(a); } public static void main(String[] args) { Circle o1 = new Circle(); o1.printCircle(); // Окружность с центром (0.0;0.0) и радиусом 1.0 Circle o2 = new Circle(1,-1,14); o2.printCircle(); // Окружность с центром (1.0;-1.0) и радиусом 14.0 System.out.println("Ploshad kruga o2: "+o2.squareCircle()); //615.75... o1.zoomCircle(14); sop("Dlina okrujnosti = "+o2.lengthCircle()); if(o1.equalsCircle(o2)) { System.out.println("Krugi o1 i o2 imejut ravnuju ploshad"); } else { System.out.println("Krugi o1 i o2 imejut raslichnuju ploshad"); } } } 2. ЗаданиеСоздайте в классе Circle метод, перемещающий центр круга в случайную точку квадрата координатной плоскости с диагональю от [-99;-99] до [99;99]. Обратите внимание на то, что требуется создать обычный метод, применимый к уже существующему объекту, а не конструктор создающий новый объект. class Circle { public double x; // абсцисса центра public double y; // ордината центра public double r; // радиус public void printCircle() { System.out.println("Okrujnost s centrom ("+x+";"+y+") i radiusom "+r); } public void moveCircle(double a, double b) { x = x + a; y = y + b; } public void zoomCircle(double r) { this.r = this.r * r; } public Circle() { x = 0.0; y = 0.0; r = 1.0; } public Circle(double a, double b, double s) { x = a; y = b; r = s; } // метод вычисляющий площадь круга public double squareCircle() { double s = Math.PI * r * r; return s; } // метод проверяющий равны ли окружности по площадям public boolean equalsCircle(Circle cir) { if(this.squareCircle() == cir.squareCircle()) { return true; } else { return false; } } //Метод, вычисляющий длину окружности public double lengthCircle() { double l = Math.PI*2*r; return l; } public void randomCenter() { x = (int)(Math.random()*199-99); y = (int)(Math.random()*199-99); } } public class two { public static void sop(String a) { System.out.println(a); } public static void main(String[] args) { Circle o1 = new Circle(); o1.printCircle(); // Окружность с центром (0.0;0.0) и радиусом 1.0 Circle o2 = new Circle(1,-1,14); o2.printCircle(); // Окружность с центром (1.0;-1.0) и радиусом 14.0 System.out.println("Ploshad kruga o2: "+o2.squareCircle()); //615.75... o1.zoomCircle(14); sop("Dlina okrujnosti = "+o2.lengthCircle()); if(o1.equalsCircle(o2)) { System.out.println("Krugi o1 i o2 imejut ravnuju ploshad"); } else { System.out.println("Krugi o1 i o2 imejut raslichnuju ploshad"); } o1.randomCenter(); o1.printCircle(); } } 3. ЗаданиеИзмените в классе Circle конструктор по умолчанию так, чтобы в момент создания объекта с его помощью, координаты центра и радиус окружности пользователь вводил с клавиатуры. import java.util.Scanner; class Circle { public double x; // абсцисса центра public double y; // ордината центра public double r; // радиус public void printCircle() { System.out.println("Okrujnost s centrom ("+x+";"+y+") i radiusom "+r); } public void moveCircle(double a, double b) { x = x + a; y = y + b; } public void zoomCircle(double r) { this.r = this.r * r; } public Circle() { System.out.println("Vvedite ordinatu kruga:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu kruga:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } System.out.println("Vvedite radius kruga:"); Scanner sc3 = new Scanner(System.in); if(sc3.hasNextInt()) { r = sc3.nextInt(); } /*x = 0.0; y = 0.0; r = 1.0; */ } public Circle(double a, double b, double s) { x = a; y = b; r = s; } // метод вычисляющий площадь круга public double squareCircle() { double s = Math.PI * r * r; return s; } // метод проверяющий равны ли окружности по площадям public boolean equalsCircle(Circle cir) { if(this.squareCircle() == cir.squareCircle()) { return true; } else { return false; } } //Метод, вычисляющий длину окружности public double lengthCircle() { double l = Math.PI*2*r; return l; } public void randomCenter() { x = (int)(Math.random()*199-99); y = (int)(Math.random()*199-99); } } public class three { public static void sop(String a) { System.out.println(a); } public static void main(String[] args) { Circle o1 = new Circle(); o1.printCircle(); // Окружность с центром (0.0;0.0) и радиусом 1.0 Circle o2 = new Circle(1,-1,14); o2.printCircle(); // Окружность с центром (1.0;-1.0) и радиусом 14.0 System.out.println("Ploshad kruga o2: "+o2.squareCircle()); //615.75... o1.zoomCircle(14); sop("Dlina okrujnosti = "+o2.lengthCircle()); if(o1.equalsCircle(o2)) { System.out.println("Krugi o1 i o2 imejut ravnuju ploshad"); } else { System.out.println("Krugi o1 i o2 imejut raslichnuju ploshad"); } o1.randomCenter(); o1.printCircle(); } } 4. ЗаданиеСоздайте в классе Circle метод, вычисляющий расстояние между центрами двух окружностей. import java.util.Scanner; class Circle { public double x; // абсцисса центра public double y; // ордината центра public double r; // радиус public void printCircle() { System.out.println("Okrujnost s centrom ("+x+";"+y+") i radiusom "+r); } public void moveCircle(double a, double b) { x = x + a; y = y + b; } public void zoomCircle(double r) { this.r = this.r * r; } public Circle() { System.out.println("Vvedite ordinatu kruga:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu kruga:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } System.out.println("Vvedite radius kruga:"); Scanner sc3 = new Scanner(System.in); if(sc3.hasNextInt()) { r = sc3.nextInt(); } } public Circle(double a, double b, double s) { x = a; y = b; r = s; } // метод вычисляющий площадь круга public double squareCircle() { double s = Math.PI * r * r; return s; } // метод проверяющий равны ли окружности по площадям public boolean equalsCircle(Circle cir) { if(this.squareCircle() == cir.squareCircle()) { return true; } else { return false; } } //Метод, вычисляющий длину окружности public double lengthCircle() { double l = Math.PI*2*r; return l; } public void randomCenter() { x = (int)(Math.random()*199-99); y = (int)(Math.random()*199-99); } public double deltaCircles(Circle crc) { double deltax = Math.abs(this.x-crc.x); double deltay = Math.abs(this.y-crc.y); double delta = Math.sqrt(deltax*deltax+deltay*deltay); System.out.println(deltax+" "+deltay); return delta; } } public class four { public static void sop(String a) { System.out.println(a); } public static void main(String[] args) { Circle o1 = new Circle(); o1.printCircle(); // Окружность с центром (0.0;0.0) и радиусом 1.0 Circle o2 = new Circle(1,-1,14); o2.printCircle(); // Окружность с центром (1.0;-1.0) и радиусом 14.0 System.out.println("Ploshad kruga o2: "+o2.squareCircle()); //615.75... o1.zoomCircle(14); sop("Dlina okrujnosti = "+o2.lengthCircle()); if(o1.equalsCircle(o2)) { System.out.println("Krugi o1 i o2 imejut ravnuju ploshad"); } else { System.out.println("Krugi o1 i o2 imejut raslichnuju ploshad"); } o1.randomCenter(); o1.printCircle(); sop("Rasstoyanie mejdu centrami krugov = "+o1.deltaCircles(o2)); } } 5. ЗаданиеСоздайте в классе Circle метод, проверяющий, касаются ли окружности в одной точке. Учтите, что возможен вариант, когда одна окружность содержится внутри другой и при этом всё равно возможно касание в одной точке. import java.util.Scanner; class Circle { public double x; // абсцисса центра public double y; // ордината центра public double r; // радиус // метод, выводящий описание круга на экран public void printCircle() { System.out.println("Okrujnost s centrom ("+x+";"+y+") i radiusom "+r); } // метод, перемещающий круг на указанные переменные public void moveCircle(double a, double b) { x = x + a; y = y + b; } // метод, масштабирующий круг public void zoomCircle(double r) { this.r = this.r * r; } // метод конструктора, просит пользователя ввести координаты и радиус круга самостоятельно public Circle() { System.out.println("Vvedite ordinatu kruga:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu kruga:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } System.out.println("Vvedite radius kruga:"); Scanner sc3 = new Scanner(System.in); if(sc3.hasNextInt()) { r = sc3.nextInt(); } } // Перегрузка предыдущего метода, позволяет программисту вводить нужные координаты public Circle(double a, double b, double s) { x = a; y = b; r = s; } // метод вычисляющий площадь круга public double squareCircle() { double s = Math.PI * r * r; return s; } // метод проверяющий равны ли окружности по площадям public boolean equalsCircle(Circle cir) { if(this.squareCircle() == cir.squareCircle()) { return true; } else { return false; } } //Метод, вычисляющий длину окружности public double lengthCircle() { double l = Math.PI*2*r; return l; } // Метод, к заданию 3 public void randomCenter() { x = (int)(Math.random()*199-99); y = (int)(Math.random()*199-99); } // Метод, к заданию 4 public double deltaCircles(Circle crc) { double deltax = Math.abs(this.x-crc.x); double deltay = Math.abs(this.y-crc.y); double delta = Math.sqrt(deltax*deltax+deltay*deltay); //System.out.println(deltax+" "+deltay); return delta; } // Метод, к заданию 5 public boolean hitTestCircle(Circle crc) { if(this.deltaCircles(crc)==(double)(this.r+crc.r)||this.deltaCircles(crc)==(double)(this.r-crc.r)) { if(this.x!=crc.x||this.y!=crc.y||this.r!=crc.r) { return true; } else { return false; } } else { return false; } } } public class five { public static void sop(String a) { System.out.println(a); } public static void main(String[] args) { Circle o1 = new Circle(1,1,1);//1,1,1 - к номеру 5 o1.printCircle(); // Окружность с центром (0.0;0.0) и радиусом 1.0 Circle o2 = new Circle(1,-1,1);// Окружность o2 с центром в (1;-1) и радиусом 1 o2.printCircle(); // Окружность с центром (1.0;-1.0) и радиусом 14.0 System.out.println("Ploshad kruga o2: "+o2.squareCircle()); //615.75... //o1.zoomCircle(14);//удалить - к номеру 5 (масштабирует круг) sop("Dlina okrujnosti = "+o2.lengthCircle());// Выводит длину второй окружности //Сравнивает площади кругов, после чего делает умозаключение: равны ли круги или нет if(o1.equalsCircle(o2)) { System.out.println("Krugi o1 i o2 imejut ravnuju ploshad"); } else { System.out.println("Krugi o1 i o2 imejut raslichnuju ploshad"); } //o1.randomCenter();//удалить - к номеру 5 (переносит центр круга в случайную точку (задание 3)) //o1.printCircle();// Окружность с центром (rand, rand) и радиусом 1 //Проверяет, пересекаются ли круги в одной точке if(o1.hitTestCircle(o2)) { System.out.println("Krugi peresekajutsa v odnoj tochke"); } else { System.out.println("Krugi NE peresekajutsa v odnoj tochke"); } sop("Rasstoyanie mejdu centrami krugov = "+o1.deltaCircles(o2)); } } Создание классов (продолжение). Класс Object1. ЗаданиеСоздайте в классе метод, который будет выводить на экран сообщение о том, в какой координатной четверти лежит точка. class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { x = 0.0; y = 0.0; } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } } public class one { public static void main(String[] args) { Point p1 = new Point(); Point p2 = new Point(-1,1); System.out.println("Distanse between "+p1+" and "+p2+" equals "+p1.length(p2)); p2.quarter(); } } 2. ЗаданиеСоздайте в классе метод, проверяющий, являются ли две точки симметричными относительно начала отсчёта. import java.util.*; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { x = 0.0; y = 0.0; } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } } public class two { public static void main(String[] args) { Point p1 = new Point(1,1); Point p2 = new Point(-1,1); System.out.println("Distanse between "+p1+" and "+p2+" equals "+p1.length(p2)); p2.quarter(); p1.sim(p2); } } 3. ЗаданиеИзмените в классе конструктор по умолчанию таким образом, чтобы начальные координаты точки при её создании пользователь задавал с клавиатуры. import java.util.*; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } } public class three { public static void main(String[] args) { Point p1 = new Point(); Point p2 = new Point(-1,1); System.out.println("Distanse between "+p1+" and "+p2+" equals "+p1.length(p2)); p2.quarter(); p1.sim(p2); } } 4. ЗаданиеСоздайте в классе метод, проверяющий, являются ли три точки коллинеарными (т.е. лежащими на одной прямой). import java.util.*; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public void koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); } else { System.out.println("Ne kollinearni"); } } } public class four { public static void main(String[] args) { Point p1 = new Point(1,1); Point p2 = new Point(2,2); Point p3 = new Point(3,3); p1.printPoint(); System.out.println("Distanse between "+p1+" and "+p2+" equals "+p1.length(p2)); p2.quarter(); p1.sim(p2); p1.koll(p2,p3); } } 5. ЗаданиеВместо представленного метода equalsPoint перегрузите в классе методы equals и hashCode. import java.util.*; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextDouble()) { x = sc1.nextDouble(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextDouble()) { y = sc2.nextDouble(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } public int hashCode() { double k = x*y; return (int)k; } public boolean equals(Point p1) { if(this.x==p1.x&&this.y==p1.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public void koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); } else { System.out.println("Ne kollinearni"); } } } public class five { public static void main(String[] args) { Point p1 = new Point(1.9,1.2); Point p2 = new Point(1.9,1.2); Point p3 = new Point(3,3); p1.printPoint(); System.out.println("Distanse between "+p1+" and "+p2+" equals "+p1.length(p2)); p2.quarter(); p1.sim(p2); p1.koll(p2,p3); System.out.println(/*p1.equals(p2)*/p1.hashCode()+" "+p2.hashCode()); } } Создание классов (конец). Полиморфизм, инкапсуляция1. ЗаданиеСоздайте класс треуголников на координатной плоскости, используя в качестве полей объекты-точки. Реализуйте в классе: import java.util.Scanner; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public void koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); } else { System.out.println("Ne kollinearni"); } } } class Triangle { public Point A; public Point B; public Point C; public Triangle() { A = new Point(); B = new Point(); C = new Point(); } public Triangle(double ax, double ay, double bx, double by, double cx, double cy) { A = new Point(ax, ay); B = new Point(bx, by); C = new Point(cx, cy); } public String toString() { return "Treygoljnik s koordinatami vershin: A="+A.toString()+"; B="+B.toString()+"; C="+C.toString()+";"; } public void print() { System.out.print(this.toString()); } public double P() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); double c = Math.sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)); System.out.println(); System.out.println(a); System.out.println(b); System.out.println(c); return a+b+c; } public double S() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); //double c = (A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y); double h = Math.abs(a*a-b/2*b/2); return h*b/2; } } public class one { public static void main(String[] args) { Triangle abc = new Triangle(1,6,3,2,4,6); abc.print(); System.out.println("Perimetr treygoljnika raven: "+abc.P()); System.out.println("Ploshad treygoljnika ravna: "+abc.S()); } } 2. ЗаданиеДоработайте конструктор таким образом, чтобы нельзя было задать три вершины, лежащие на одной прямой. Это несложно будет сделать с использованием метода из класса точек, который проверяет явлются ли точки коллинеарными, если прежде вы не реализовали этот метод, то сейчас самое время сделать это. import java.util.Scanner; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public boolean koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); return true; } else { System.out.println("Ne kollinearni"); return false; } } } class Triangle { public Point A; public Point B; public Point C; public Triangle() { Point a = new Point(); Point b = new Point(); Point c = new Point(); if(!a.koll(b,c)) { A = new Point(a.x, a.y); B = new Point(b.x, b.y); C = new Point(c.x, c.y); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public Triangle(double ax, double ay, double bx, double by, double cx, double cy) { Point a = new Point(ax, ay); Point b = new Point(bx, by); Point c = new Point(cx, cy); if(!a.koll(b,c)) { A = new Point(ax, ay); B = new Point(bx, by); C = new Point(cx, cy); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public String toString() { return "Treygoljnik s koordinatami vershin: A="+A.toString()+"; B="+B.toString()+"; C="+C.toString()+";"; } public void print() { System.out.print(this.toString()); } public double P() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); double c = Math.sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)); System.out.println(); System.out.println(a); System.out.println(b); System.out.println(c); return a+b+c; } public double S() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); //double c = (A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y); double h = Math.abs(a*a-b/2*b/2); return h*b/2; } } public class two { public static void main(String[] args) { //Triangle abc = new Triangle(1,6,3,2,4,6); //Triangle abc = new Triangle(1,1,2,2,3,3); Triangle abc = new Triangle(); abc.print(); System.out.println("Perimetr treygoljnika raven: "+abc.P()); System.out.println("Ploshad treygoljnika ravna: "+abc.S()); } } 3. ЗаданиеИнкапсулируйте поля таким образом, чтобы нельзя изменить значение любого из них так, чтобы вершины оказались на одной прямой. import java.util.Scanner; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public boolean koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); return true; } else { System.out.println("Ne kollinearni"); return false; } } } class Triangle { private Point A; private Point B; private Point C; public Triangle() { Point a = new Point(); Point b = new Point(); Point c = new Point(); if(!a.koll(b,c)) { A = new Point(a.x, a.y); B = new Point(b.x, b.y); C = new Point(c.x, c.y); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public Triangle(double ax, double ay, double bx, double by, double cx, double cy) { Point a = new Point(ax, ay); Point b = new Point(bx, by); Point c = new Point(cx, cy); if(!a.koll(b,c)) { A = new Point(ax, ay); B = new Point(bx, by); C = new Point(cx, cy); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public String toString() { return "Treygoljnik s koordinatami vershin: A="+A.toString()+"; B="+B.toString()+"; C="+C.toString()+";"; } public void print() { System.out.print(this.toString()); } public double P() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); double c = Math.sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)); System.out.println(); System.out.println(a); System.out.println(b); System.out.println(c); return a+b+c; } public double S() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); //double c = (A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y); double h = Math.abs(a*a-b/2*b/2); return h*b/2; } public Point getA() { return A; } public Point getB() { return B; } public Point getC() { return C; } public void setA(double x, double y) { Point p = new Point(x,y); if(!p.koll(B,C)) { A = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } public void setB(double x, double y) { Point p = new Point(x,y); if(!p.koll(A,C)) { B = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } public void setC(double x, double y) { Point p = new Point(x,y); if(!p.koll(A,B)) { C = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } } public class three { public static void main(String[] args) { Triangle abc = new Triangle(1,6,3,2,4,6); //Triangle abc = new Triangle(1,1,2,2,3,3); //Triangle abc = new Triangle(); abc.print(); System.out.println("Perimetr treygoljnika raven: "+abc.P()); System.out.println("Ploshad treygoljnika ravna: "+abc.S()); abc.setA(10,11); abc.print(); } } 4. ЗаданиеСоздайте метод, поворачивающий треугольник вокруг центра тяжести на указанное в аргументе количество градусов. import java.util.Scanner; class Point { public double x; // абсцисса точки public double y; // ордината точки // возвращает строку с описанием точки public String toString() { return "("+x+";"+y+")"; } // выводит на экран описание точки public void printPoint() { System.out.print(this.toString()); } // метод перемещает точку на указанный вектор public void movePoint(double a, double b) { x = x + a; y = y + b; } // метод изменяет координаты точки на указанные public void setPoint(double a, double b) { x = a; y = b; } // конструктор по умолчанию, создающий точку в начале координат public Point() { System.out.println("Vvedite ordinatu tochki:"); Scanner sc1 = new Scanner(System.in); if(sc1.hasNextInt()) { x = sc1.nextInt(); } System.out.println("Vvedite abstissu tochki:"); Scanner sc2 = new Scanner(System.in); if(sc2.hasNextInt()) { y = sc2.nextInt(); } } // конструктор, создающий точку с указанными координатами public Point(double a, double b) { x = a; y = b; } // метод вычисляющий расстояние между точками public double length(Point p) { return Math.sqrt( Math.pow(p.x-x,2) + Math.pow(p.y-y,2) ); } // метод проверяющий совпадают ли точки public boolean equalsPoint(Point p) { if(this.x == p.x && this.y == p.y) { return true; } else { return false; } } public void quarter() { if(x>0&&y>0) { System.out.println("Point p2 is in first coordinate quarter"); } else if(x<0&&y>0) { System.out.println("Point p2 is in second coordinate quarter"); } else if(x<0&&y<0) { System.out.println("Point p2 is in third coordinate quarter"); } else { System.out.println("Point p2 is in fourth coordinate quarter"); } } public void sim(Point p) { if(Math.abs(this.x)==Math.abs(p.x)&&Math.abs(this.y)==Math.abs(p.y)) { System.out.println("Points are symmetrical"); } else { System.out.println("Points are not symmetrical"); } } public boolean koll(Point p1, Point p2) { double distx1 = this.x-p1.x; double disty1 = this.y-p1.y; double distx2 = p1.x-p2.x; double disty2 = p1.y-p2.y; double k1 = disty1/distx1; double k2 = disty2/distx2; double c1 = this.y-k1*this.x; double c2 = p2.y-k2*p2.x; if(k1==k2&&c1==c2) { System.out.println("Kollinearni"); return true; } else { System.out.println("Ne kollinearni"); return false; } } } class Triangle { private Point A; private Point B; private Point C; public Triangle() { Point a = new Point(); Point b = new Point(); Point c = new Point(); if(!a.koll(b,c)) { A = new Point(a.x, a.y); B = new Point(b.x, b.y); C = new Point(c.x, c.y); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public Triangle(double ax, double ay, double bx, double by, double cx, double cy) { Point a = new Point(ax, ay); Point b = new Point(bx, by); Point c = new Point(cx, cy); if(!a.koll(b,c)) { A = new Point(ax, ay); B = new Point(bx, by); C = new Point(cx, cy); } else { System.out.println("Tochki, zadannije vami, yavljyajytsa kollinearnimi, treugoljnik postroit nevozmojno"); A = new Point(-1, 0); B = new Point(0, 1); C = new Point(1, 1); } } public String toString() { return "Treygoljnik s koordinatami vershin: A="+A.toString()+"; B="+B.toString()+"; C="+C.toString()+";"; } public void print() { System.out.print(this.toString()); } public double P() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); double c = Math.sqrt((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y)); /*System.out.println(); System.out.println(a); System.out.println(b); System.out.println(c);*/ return a+b+c; } public double S() { double a = Math.sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); double b = Math.sqrt((B.x-B.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y)); //double c = (A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y); double h = Math.abs(a*a-b/2*b/2); return h*b/2; } public Point getA() { return A; } public Point getB() { return B; } public Point getC() { return C; } public void setA(double x, double y) { Point p = new Point(x,y); if(!p.koll(B,C)) { A = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } public void setB(double x, double y) { Point p = new Point(x,y); if(!p.koll(A,C)) { B = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } public void setC(double x, double y) { Point p = new Point(x,y); if(!p.koll(A,B)) { C = p; } else { System.out.println("Tochku pomenjat neljza, t. k. ona budet kollinearna k drugim vershinam treugolnika"); } } public void rotate(double deg) { double rad,cos,sin; if(deg == 90) { cos = 0; sin = 1; } else { rad = deg*Math.PI/180; cos = Math.cos(rad); sin = Math.sin(rad); } double newAx = A.x*cos-A.y*sin; double newAy = A.x*sin-A.y*cos; double newBx = B.x*cos-B.y*sin; double newBy = B.x*sin-B.y*cos; double newCx = C.x*cos-C.y*sin; double newCy = C.x*sin-C.y*cos; A.x = newAx; A.y = newAy; B.x = newBx; B.y = newBy; C.x = newCx; C.y = newCy; /*A.x = A.x*Math.cos(rad)-A.y*Math.sin(rad); A.y = A.x*Math.sin(rad)-A.y*Math.cos(rad); B.x = B.x*Math.cos(rad)-B.y*Math.sin(rad); B.y = B.x*Math.sin(rad)-B.y*Math.cos(rad); C.x = C.x*Math.cos(rad)-C.y*Math.sin(rad); C.y = C.x*Math.sin(rad)-C.y*Math.cos(rad);*/ //Triangle tr = new Triangle(A,B,C); //return tr; } } public class four { public static void main(String[] args) { //Triangle abc = new Triangle(1,6,3,2,4,6); //Triangle abc = new Triangle(1,1,2,2,3,3); Triangle abc = new Triangle(-1,0,0,1,1,0); abc.print(); System.out.println("Perimetr treygoljnika raven: "+abc.P()); System.out.println("Ploshad treygoljnika ravna: "+abc.S()); //abc.setA(10,11); //abc.print(); System.out.println(); System.out.println(Math.sin(Math.PI)); abc.rotate(45); System.out.println("Rotate 45"); abc.print(); } }
|
||