Файл: Лабораторная работа 2 Классы и объекты java по дисциплине Объектноориентированное программирование ст гр. Ивт223 Седов Р. М.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 136
Скачиваний: 2
Triangle[] triangles;//объявление массива из треугольниковETriangle[] eTriangles;//объявление массива из равностронних треугольниковSystem.out.println("Введите число треугольников");N=(int)enterNumber(3,true);//удобная функция для ввода с клавиатурыSystem.out.println("Вы ввели:"+N);triangles=new Triangle[N];//выделение памяти под массив треугольниковfloat maxSquare=0;//переменная для хранения максимальной площадиfor(int i=0;itriangles[i]=new Triangle();//создание объектаif(triangles[i].isExist()) {//если треугольник существуетtriangles[i].info();//выводим информациюif (maxSquare < triangles[i].square()) {//сравниваем с макс площадьюmaxSquare = triangles[i].square();//если плоащадь текущего треугольнка больше приваиваем ее в макс}}else{//если был введен не треугольник выводим сообщение и возвращаемся на предыдущию операциюSystem.out.println("Введите треугольник снова");i--;}}int triangleCounter=0;//переменная для подсчета треугольников с макс площаьюfor(int i=0;iif(maxSquare==triangles[i].square()){//если плоащадь равна максимальной увеличиваем счетчикtriangleCounter++;}}//выводим собщение если были введены треугольникиif(N!=0)System.out.println("Максимальная площадь="+maxSquare+", число треугольников с макс. площадью ="+triangleCounter);System.out.println("Введите число равносторонних треугольников");M=(int)enterNumber(3,true);//удобная функция для ввода с клавиатурыSystem.out.println("Вы ввели:"+M);eTriangles=new ETriangle[M];//выделение памяти под массив равностронних треугольниковint triangleNumber=0;//номер треугольника с максимальной медианойfor(int i=0;ieTriangles[i]=new ETriangle();//создание объекта "равносторонний треугольник"if(eTriangles[i].isExist()&&eTriangles[i].isEqual()) {//проверка существования такого треугольникаeTriangles[i].info();//если треугольник существует и он равносторонний, выводим инфомоормациюif(eTriangles[triangleNumber].median()triangleNumber=i;//щаписываем номер тр-ка, если его медиана больше}}else{//если был введен несущ треугольникSystem.out.println("Введите треугольник снова");i--;}}//выводим информациюif(M!=0){System.out.println("\t\t\t\tТреугольник с максимальной медианой №"+(triangleNumber+1));eTriangles[triangleNumber].info();}}//класс треугольникstatic class Triangle{//длины сторонpublic float a,b,c;//конструкторpublic Triangle(){System.out.println("Введите стороны треугольника");//Ввод с клавиатуры сторон, параметр true для проверки на положительные значенияa=enterNumber(3,true);b=enterNumber(3,true);c=enterNumber(3,true);System.out.println("Труегольник "+(isExist()?"существует":"не существует"));}//функция для вывода информацииpublic void info(){System.out
.println("-Стороны: \n a="+a+"\n b="+b+"\n c="+c);
System.out.println("-Углы: \n
System.out.println("-Площадь="+square());
}
//функция для проверки существует ли треугольник с данными сторонами
public boolean isExist(){
if( a< b+ c&& b< a+ c&&c< a+ b) return true;
else return false;
}
//функция для вычисления периметра
public float perimeter(){
return a+ b+ c;
}
//для вычисления площади
public float square(){
return (float) (0.5f* a* b*Math.sin(Math.toRadians(getAngle(c,a,b))));
}
// функция для вычисления угла между переданными сторонами, где первый аргумент-сторона напротив угла
private float getAngle(float frontSide,float sideB, float sideC){
float cos=(sideB*sideB+sideC*sideC-frontSide*frontSide)/(2*sideB*sideC);
return (float) Math.toDegrees(Math.acos(cos));
}
}
//класс "Равносторонний треугольник" наследуется от класса "Треугольник"
static class ETriangle extends Triangle{
//конструктор
ETriangle(){
//вызор конструктора родительского класса
super();
System.out.println("Треугольник "+(isEqual()?"равносторонний":"неравносторонний"));
}
//перегруженная функция для вывода информации
public void info(){
//вызов родительской функции
super.info();
System.out.println("-Медиана="+median());
}
//проверка является ли треугольник равносторонним
public boolean isEqual(){
if(a==b&&b==c)return true;
return false;
}
//функция, возвращающая велечину медианы треугольника
public float median(){
return (float) (Math.sqrt(3)*a/2);
}
}
public static float enterNumber(int tries, boolean onlyPositive){//функция для ввода числа с клавиатуры
Scanner scanner=new Scanner(System.in);//создание объекта для чтения с клавиатуры
float number=0;//переменная, куда созранится введеное число
do{//цикл для повторного ввода при неудачной попытки
try{
number=Float.parseFloat(scanner.nextLine()); //попытка считать число с клавиатуры
if(onlyPositive){
if(number>=0) {
return number; //возвращаем результат если число больше нуля
}
System.out.println("Ошибка:Число меньше нуля!");
tries--;//уменьшаем попытки
}else{
return number;
}
}
catch(Exception e){ //блок для обрабокти ошибки, когда введено не число
System.out.println("Ошибка:Введено не число!");
tries--;//уменьшаем попытки
};
}while(tries>0);//выполняем цикл пока есть попытки
System.out.println("Попытки закончились!");
System.exit(0);//при выходе из цикла завершаем программу
return 0;
}
}
Вывод
В ходе данной лабораторной работы были изучены классы и объекты при программировании на JAVA.