knyazer

Untitled

Oct 15th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.33 KB | None | 0 0
  1. package com.school;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.    
  7.     // Функция для расчета длины стороны треугольника
  8.     public static double d(double dx, double dy) {
  9.         return Math.sqrt(dx * dx + dy * dy);
  10.     }
  11.    
  12.     // Функция для расчета площади по формуле Герона
  13.     public static double S(double p1x, double p2x, double p3x, double p1y, double p2y, double p3y) {
  14.         double  d1 = d(p1x - p2x, p1y - p2y),
  15.                 d2 = d(p2x - p3x, p2y - p2y),
  16.                 d3 = d(p3x - p1x, p3y - p1y);
  17.         double p = (d1 + d2 + d3) / 2.0;
  18.         return Math.sqrt(p * (p - d1) * (p - d2) * (p - d3));
  19.     }
  20.    
  21.     // Функция для проверки точек треугольника на правильность
  22.     public static boolean check(double px1, double px2, double px3, double p1y, double p2y, double p3y) {
  23.         int sum = 0;
  24.         if (px1 == 0) sum += 1;
  25.         if (px2 == 0) sum += 1;
  26.         if (px3 == 0) sum += 1;
  27.  
  28.         return (sum == 2) && (p1y != 0) && (p2y != 0) && (p3y != 0);
  29.     }
  30.  
  31.     public static void main(String[] args) {
  32.         Scanner in = new Scanner(System.in);
  33.  
  34.         int px[] = new int[10];
  35.         int py[] = new int[10];
  36.  
  37.         for (int i = 0; i < 10; i++) { // Генерация случайных точек
  38.             px[i] = (int)(Math.random() * 5 - 2);
  39.             py[i] = (int)(Math.random() * 10 - 5);
  40.         }
  41.  
  42.         double max = 0;
  43.  
  44.         for (int i = 0; i < 10; i ++) { // Перебор всех точек
  45.             for (int j = 0; j < 10; j++) {
  46.                 for (int k = 0; k < 10; k++) {
  47.                     double p1x = px[i],
  48.                             p2x = px[j],
  49.                             p3x = px[k],
  50.                             p1y = py[i],
  51.                             p2y = py[j],
  52.                             p3y = py[k];
  53.  
  54.                     if (check(p1x, p2x, p3x, p1y, p2y, p3y)) {
  55.                         double s = S(p1x, p2x, p3x, p1y, p2y, p3y);
  56.  
  57.                         if (s > max) { // Нахождение максимальной площади
  58.                             max = s;
  59.                         }
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.  
  65.         System.out.println(max);
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment