Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package naprednolabs;
- import java.io.*;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- public class Shapes1Test {
- public static void main(String[] args) {
- ShapesApplication shapesApplication = new ShapesApplication();
- System.out.println("===READING SQUARES FROM INPUT STREAM===");
- System.out.println(shapesApplication.readCanvases(System.in));
- System.out.println("===PRINTING LARGEST CANVAS TO OUTPUT STREAM===");
- shapesApplication.printLargestCanvasTo(System.out);
- }
- }
- class Canvas {
- private String id;
- private List<Integer> niza;
- public Canvas() {
- id = "empty";
- niza = new ArrayList<>();
- }
- public Canvas(String idcopy, ArrayList<Integer> nizacopy) {
- id = idcopy;
- niza = new ArrayList<>();
- for (int i = 0; i < nizacopy.size(); i++) {
- niza.add(nizacopy.get(i));
- }
- }
- public static Canvas createCanvas(String line) {
- String[] help = line.split("\\s+");
- ArrayList<Integer> novo = new ArrayList<>();
- for (int i = 1; i < help.length; i++) {
- novo.add(Integer.parseInt(help[i]));
- }
- return new Canvas(help[0], novo);
- }
- public int getSize() {
- return niza.size();
- }
- @Override
- public String toString() {
- return String.format("%s %d %d", id, getSize(), getPerimeter());
- }
- public int getPerimeter() {
- int suma = 0;
- for (int i = 0; i < niza.size(); i++) {
- suma += niza.get(i);
- }
- return suma * 4;
- }
- }
- class ShapesApplication {
- private List<Canvas> niza;
- public ShapesApplication() {
- this.niza = new ArrayList<>();
- }
- public int readCanvases(InputStream inputStream) {
- BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
- this.niza = br.lines()
- .map(Canvas::createCanvas)
- .collect(Collectors.toList());
- int suma = 0;
- for (int i = 0; i < this.niza.size(); i++) {
- suma += niza.get(i).getSize();
- }
- return suma;
- }
- public void printLargestCanvasTo(OutputStream outputStream) {
- PrintWriter pw = new PrintWriter(outputStream);
- Canvas comp = niza.get(0);
- for(int i=0; i<niza.size(); i++) {
- if(niza.get(i).getPerimeter() > comp.getPerimeter())
- comp = niza.get(i);
- }
- pw.println(comp);
- pw.flush();
- }
- }
- /*
- Да се дефинира класа ShapesApplication во која се чуваат
- податоци за повеќе прозорци на кои се исцртуваат геометриски
- слики во форма на квадрат.
- За класата да се дефинира:
- ShapesApplication() - конструктор
- int readCanvases (InputStream inputStream) - метод којшто
- од влезен поток на податоци ќе прочита информации за повеќе
- прозорци на кои се исцртуваат квадрати. Во секој ред од
- потокот е дадена информација за еден прозорец во формат:
- canvas_id size_1 size_2 size_3 …. size_n, каде што canvas_id
- е ИД-то на прозорецот, а после него следуваат големините
- на страните на квадратите што се исцртуваат во прозорецот.
- Методот треба да врати цел број што означува колку квадрати
- за сите прозорци се успешно прочитани.
- void printLargestCanvasTo (OutputStream outputStream) - метод
- којшто на излезен поток ќе го испечати прозорецот чии квадрати
- имаат најголем периметар. Печатењето да се изврши во форматот
- canvas_id squares_count total_squares_perimeter.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement