Advertisement
zenbot_one

Untitled

Dec 9th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. package ru.ZENEGIX.Teach;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.util.HashMap;
  9. import java.util.HashSet;
  10.  
  11. public class Main {
  12. static String[] m;
  13. static Double[] heights;
  14. static HashSet<Integer> v = new HashSet<Integer>();
  15. static HashMap<Integer, Double> S = new HashMap<Integer, Double>();
  16.  
  17. public static void main(String[] args) throws IOException{
  18. //Нахождение файла для проверки программы
  19. BufferedReader kreader = new BufferedReader(new InputStreamReader(System.in));
  20. System.out.print("Пожалуйста, укажите полный путь к файлу, из которого надо взять данные для проверки работоспособности программы.\nВы можете написать %default% и имя файла, в таком случае, файл будет взят из директории, в которой запущена программа\n");
  21. String[] m1 = kreader.readLine().split(" ");
  22. String nameFile = null;
  23. BufferedReader readers = null;
  24. if(m1[0].contains("%default%")){
  25. if(m1.length < 2){
  26. System.out.println("Введите имя файла!");
  27. nameFile = kreader.readLine();
  28. } else nameFile = m1[1];
  29. File file = new File (CurrentDir() + nameFile);
  30. if(!file.exists()) {
  31. System.out.println("Файл не найден!");
  32. return;
  33. }
  34. readers = new BufferedReader(new FileReader(CurrentDir() + nameFile));
  35. } else {
  36. File file = new File (m1[0]);
  37. if(!file.exists()) {
  38. System.out.println("Файл не найден!");
  39. return;
  40. }
  41. readers = new BufferedReader(new FileReader(m1[0]));
  42. }
  43. //Взятие первой строки из файла, она содержит два числа N и D, N - число треугольников, D - ширина норки
  44. String[] m2 = readers.readLine().split(" ");
  45. int N = 0, D = 0;
  46. try{
  47. N = Integer.parseInt(m2[0]);
  48. D = Integer.parseInt(m2[1]);
  49. } catch(NumberFormatException e){
  50. System.out.println("Произошла ошибка, не получилось получить числа из файла.\nПожалуйста, повторите попытку, или обратитесь к автору программы!");
  51. return;
  52. }
  53. m = new String[N + 1];
  54. heights = new Double[N + 1];
  55. for(int i = 1; i <= N; i++){
  56. m[i] = readers.readLine();
  57. Double a, b, c;
  58. String[] temp = m[i].split(" ");
  59. try{
  60. a = Double.parseDouble(temp[0]);
  61. b = Double.parseDouble(temp[1]);
  62. c = Double.parseDouble(temp[2]);
  63. } catch(NumberFormatException e){
  64. System.out.println("Произошла ошибка, не получилось получить числа из файла.\nПожалуйста, повторите попытку, или обратитесь к автору программы!");
  65. return;
  66. }
  67. heights[i] = getHeight(a, b, c);
  68. }
  69. for(int i = 1; i <= N; i++){
  70. if(heights[i] <= D) {
  71. v.add(i);
  72. String[] mmm = m[i].split(" ");
  73. double a = Double.parseDouble(mmm[0]);
  74. S.put(i, heights[i] * a);
  75. if(v.contains(i)){
  76. System.out.println(heights[i]);
  77. }
  78. } else {
  79. S.put(i, 1D);
  80. }
  81. }
  82. Double max = S.get(1);
  83. int r = 0;
  84. if(S.size() == 1){
  85. if(S.get(1) > D){
  86. System.out.println(0);
  87. } else {
  88. System.out.println(1);
  89. }
  90. return;
  91. }
  92. for(int i = 1; i <= S.size(); i++){
  93. if(max < S.get(i)) {
  94. max = S.get(i);
  95. r = i;
  96. }
  97. }
  98. System.out.println(r);
  99. }
  100.  
  101. public static String CurrentDir(){
  102. String path=System.getProperty("java.class.path");
  103. String FileSeparator=(String)System.getProperty("file.separator");
  104. return path.substring(0, path.lastIndexOf(FileSeparator)+1);
  105. }
  106.  
  107. private static double getHeight(double a, double b, double c){
  108. double p = 0.5 * (a + b + c);
  109. return ((2 * (Math.sqrt(p * (p - a) * (p - b) * (p - c)))) / a);
  110. }
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement