Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8

.docx
Скачиваний:
0
Добавлен:
03.08.2021
Размер:
21.52 Кб
Скачать

Поволжский Государственный Университет Телекоммуникаций и Информатики

Кафедра ПОУТС

Лабораторная работа №8

«Работа с сериализацией в Java»

Выполнила :

Студентка гр. ИСТ 74У

Смолева В.А.

Проверили:

Атаев С.Г.

Самара 2018

Задание: Сериализовать работу номер 6.

Листинг

Main

import java.util.ArrayList; import java.util.Scanner; import static java.lang.Math.sqrt; import java.io.*; public class Main { public static void searchMinMaxPerimetr(ArrayList<Triangle> Trio){ if (Trio.size()==0) {System.out.println("В списке нет треугольников");} else { System.out.println("Размер Списка с треугольниками: "+Trio.size()); int imin=0; int imax=0; for ( int i=1;i<Trio.size();i++){ if (Trio.get(i).perimetr()<Trio.get(imin).perimetr()){ imin = i; } if (Trio.get(i).perimetr()>Trio.get(imax).perimetr()){ imax = i; } } System.out.println("Наибольший по периметру треугольник: "+Trio.get(imax)); System.out.println("Наименьший по периметру треугольник: "+Trio.get(imin)); } } public static void searchMinMaxPlozhad(ArrayList<Triangle> Trio){ if (Trio.size()==0) {System.out.println("В списке нет треугольников");} else { int imin=0; int imax=0; for ( int i=1;i<Trio.size();i++){ if (Trio.get(i).plozhad()<Trio.get(imin).plozhad()){ imin = i; } if (Trio.get(i).plozhad()>Trio.get(imax).plozhad()){ imax = i; } } System.out.println("Наибольший по площади треугольник: "+Trio.get(imax)); System.out.println("Наименьший по площади треугольник: "+Trio.get(imin)); } } public static void main(String[] args) throws Exception { System.out.println("Введите 1 для считывания из файла\nВведите 2 для ввода вручную"); ArrayList<Triangle> Ravnobedr = new ArrayList<>(); // ссылка на класс ArrayList<Triangle> Ravnostoron = new ArrayList<>(); ArrayList<Triangle> Priamoug = new ArrayList<>(); ArrayList<Triangle> Proizvol = new ArrayList<>(); Scanner sc = new Scanner(System.in); int seras = sc.nextInt(); sc.nextLine(); switch(seras) { case 1: FileInputStream fli= new FileInputStream("tempfil"); ObjectInputStream obji = new ObjectInputStream(fli); Ravnobedr =(ArrayList<Triangle>) obji.readObject(); Ravnostoron=(ArrayList<Triangle>) obji.readObject(); Priamoug=(ArrayList<Triangle>) obji.readObject(); Proizvol=(ArrayList<Triangle>) obji.readObject(); obji.close(); break; case 2: System.out.println("Введите стороны треугольника"); //ввод сторон треугольника и определение типа for (int i = 0; i < 10; i++) { Triangle T; int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int perimetr = a+b+c; double p = (perimetr/2); double plozhad = sqrt(p*(p-a)*(p-b)*(p-c)); boolean f = ((a + b > c)&(b + c > a)&(c + a > b));/*Выражение означает, что треугольник со сторонами a, b, c существует (сумма любых двух сторон больше третьей стороны)*/ boolean g = ((a == b)|(b == c)|(c == a));/*Выражение, означающее, что треугольник со сторонами a, b, c является равнобедренным (хотя бы две стороны совпадают)*/ T = new Triangle(a,b,c,perimetr,plozhad); if (a==b & a==c & b==c)//равносторонние { System.out.println("Это равносторонний треугольник"); Ravnostoron.add(T); System.out.println(T.toString());} else if (f&g)//равнобедренные { System.out.println("Это равнобедренный треугольник"); Ravnobedr.add(T); System.out.println(T.toString()); } else if (((a*a+b*b)==(c*c))|((b*b+c*c)==(a*a))|((c*c+a*a)==(b*b)))/*прямоугольные-Проверяем истинность теоремы Пифагора для каждой тройки чисел*/ { System.out.println("Это прямоугольный треугольник"); Priamoug.add(T); System.out.println(T.toString()); } else if ((a + b > c)&(b + c > a)&(c + a > b))/* Треугольник со сторонами a, b, c будет существовать, если сумма каждых двух сторон больше третьей стороны (неравенство треугольника)*/ { System.out.println("Это произвольный треугольник"); Proizvol.add(T); System.out.println(T.toString()); } else {System.out.println("Это не треугольник");} } break; default: break; } System.out.println(" "); System.out.println("Наибольший и наименьший равнобедренный треугольник по периметру: "); Main.searchMinMaxPerimetr(Ravnobedr); System.out.println("Наибольший и наименьший равносторонний треугольник по периметру: "); Main.searchMinMaxPerimetr(Ravnostoron); System.out.println("Наибольший и наименьший прямоугольный треугольник по периметру: "); Main.searchMinMaxPerimetr(Priamoug); System.out.println("Наибольший и наименьший произвольный треугольник по периметру: "); Main.searchMinMaxPerimetr(Proizvol); System.out.println(" "); System.out.println("Наибольший и наименьший равнобедренный треугольник по площади: "); Main.searchMinMaxPlozhad(Ravnobedr); System.out.println("Наибольший и наименьший равносторонний треугольник по площади: "); Main.searchMinMaxPlozhad(Ravnostoron); System.out.println("Наибольший и наименьший прямоугольный треугольник по площади: "); Main.searchMinMaxPlozhad(Priamoug); System.out.println("Наибольший и наименьший произвольный треугольник по площади: "); Main.searchMinMaxPlozhad(Proizvol); FileOutputStream fl= new FileOutputStream("tempfil"); ObjectOutputStream ob=new ObjectOutputStream(fl); ob.writeObject(Ravnobedr); ob.writeObject(Ravnostoron); ob.writeObject(Priamoug); ob.writeObject(Proizvol); ob.close(); } }

Triangle

import java.io.Serializable; public class Triangle implements Serializable{ private int a; private int b; private int c; private int perimetr; private double plozhad; public Triangle(int a, int b, int c, int perimetr, double plozhad) { this.a = a; this.b = b; this.c = c; this.perimetr = perimetr; this.plozhad = plozhad; } public int perimetr() { return perimetr; } public double plozhad() { return plozhad; } @Override // директива, которая соответствует переопределению public String toString() { String result; StringBuilder SB=new StringBuilder(); SB.append("Сторона a "+a+" "); SB.append("Сторона b "+b+" "); SB.append("Сторона c "+c+" \n"); SB.append("Периметр: "+perimetr+" \n"); SB.append("Площадь: "+plozhad); result=SB.toString(); return result; } }

Соседние файлы в предмете Программирование