Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.ZENEGIX.Teach;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.HashSet;
- public class Main {
- static String[] m;
- static Double[] heights;
- static HashSet<Integer> v = new HashSet<Integer>();
- static HashMap<Integer, Double> S = new HashMap<Integer, Double>();
- public static void main(String[] args) throws IOException{
- //Нахождение файла для проверки программы
- BufferedReader kreader = new BufferedReader(new InputStreamReader(System.in));
- System.out.print("Пожалуйста, укажите полный путь к файлу, из которого надо взять данные для проверки работоспособности программы.\nВы можете написать %default% и имя файла, в таком случае, файл будет взят из директории, в которой запущена программа\n");
- String[] m1 = kreader.readLine().split(" ");
- String nameFile = null;
- BufferedReader readers = null;
- if(m1[0].contains("%default%")){
- if(m1.length < 2){
- System.out.println("Введите имя файла!");
- nameFile = kreader.readLine();
- } else nameFile = m1[1];
- File file = new File (CurrentDir() + nameFile);
- if(!file.exists()) {
- System.out.println("Файл не найден!");
- return;
- }
- readers = new BufferedReader(new FileReader(CurrentDir() + nameFile));
- } else {
- File file = new File (m1[0]);
- if(!file.exists()) {
- System.out.println("Файл не найден!");
- return;
- }
- readers = new BufferedReader(new FileReader(m1[0]));
- }
- //Взятие первой строки из файла, она содержит два числа N и D, N - число треугольников, D - ширина норки
- String[] m2 = readers.readLine().split(" ");
- int N = 0, D = 0;
- try{
- N = Integer.parseInt(m2[0]);
- D = Integer.parseInt(m2[1]);
- } catch(NumberFormatException e){
- System.out.println("Произошла ошибка, не получилось получить числа из файла.\nПожалуйста, повторите попытку, или обратитесь к автору программы!");
- return;
- }
- m = new String[N + 1];
- heights = new Double[N + 1];
- for(int i = 1; i <= N; i++){
- m[i] = readers.readLine();
- Double a, b, c;
- String[] temp = m[i].split(" ");
- try{
- a = Double.parseDouble(temp[0]);
- b = Double.parseDouble(temp[1]);
- c = Double.parseDouble(temp[2]);
- } catch(NumberFormatException e){
- System.out.println("Произошла ошибка, не получилось получить числа из файла.\nПожалуйста, повторите попытку, или обратитесь к автору программы!");
- return;
- }
- heights[i] = getHeight(a, b, c);
- }
- for(int i = 1; i <= N; i++){
- if(heights[i] <= D) {
- v.add(i);
- String[] mmm = m[i].split(" ");
- double a = Double.parseDouble(mmm[0]);
- S.put(i, heights[i] * a);
- if(v.contains(i)){
- System.out.println(heights[i]);
- }
- } else {
- S.put(i, 1D);
- }
- }
- Double max = S.get(1);
- int r = 0;
- if(S.size() == 1){
- if(S.get(1) > D){
- System.out.println(0);
- } else {
- System.out.println(1);
- }
- return;
- }
- for(int i = 1; i <= S.size(); i++){
- if(max < S.get(i)) {
- max = S.get(i);
- r = i;
- }
- }
- System.out.println(r);
- }
- public static String CurrentDir(){
- String path=System.getProperty("java.class.path");
- String FileSeparator=(String)System.getProperty("file.separator");
- return path.substring(0, path.lastIndexOf(FileSeparator)+1);
- }
- private static double getHeight(double a, double b, double c){
- double p = 0.5 * (a + b + c);
- return ((2 * (Math.sqrt(p * (p - a) * (p - b) * (p - c)))) / a);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement