package teralg; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Locale; import java.util.Scanner; /** * Térinformatikai algoritmusok * 1. beadandó: Elemi algoritmusok * @author Máté Cserép */ public class MaxPerimeter { public static void main(String[] args) { ArrayList names = new ArrayList(); ArrayList perimeters = new ArrayList(); try { FileReader fr = new FileReader("hun_megye.txt"); BufferedReader br = new BufferedReader(fr); String line; while((line = br.readLine()) != null) { Scanner sc = new Scanner(line); sc.useLocale(Locale.US); String name = sc.next(); Double perimeter = 0.0; // Az élek hosszát két egymást követő koordinátapárból tudjuk meghatározni. Double firstX = sc.nextDouble(); Double firstY = sc.nextDouble(); Double secondX; Double secondY; while(sc.hasNext()) { secondX = sc.nextDouble(); secondY = sc.nextDouble(); Double length = Math.sqrt(Math.pow(secondX - firstX, 2) + Math.pow(secondY - firstY, 2)); perimeter += length; // az élek összegzése firstX = secondX; firstY = secondY; } names.add(name); perimeters.add(perimeter); sc.close(); } br.close(); } catch(IOException ex) { System.out.println("File handling error: " + ex.getMessage()); } // Maximumkeresés if(names.size() > 0) { String maxName = names.get(0); Double maxPerimeter = perimeters.get(0); for(int i = 1; i < perimeters.size(); ++i) { if(perimeters.get(i) > maxPerimeter) { maxPerimeter = perimeters.get(i); maxName = names.get(i); } } System.out.println("Legnagyobb kerületű megye: " + maxName); } else System.out.println("Üres bemenet."); /* // Ellenőrzés céljára for(Integer i = 0; i < names.size(); ++i) { System.out.println(names.get(i) + ": " + perimeters.get(i)); } */ } }