vov44k

Untitled

Apr 17th, 2022 (edited)
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.40 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class NUOK {
  4.  
  5.     public static void main(String[] args) {
  6.         Scanner in = new Scanner(System.in);
  7.  
  8.         double SCALE = in.nextDouble(); // 15 //  масштаб
  9.         double wingLength = in.nextDouble();  // длина крыла
  10.         double speed = in.nextDouble();  // скорость
  11.  
  12.  
  13.         int n = in.nextInt(); // параметры массива
  14.         int m = in.nextInt(); //  _,_
  15.         int iA = 0;  // Искомые параметры точки А
  16.         int jA = 0;
  17.         int iB = 0; // точки В
  18.         int jB = 0;
  19.         int iB1 = 0; // точки В1
  20.         int jB1 = 0;
  21.         int iC = 0;  // точки С
  22.         int jC = 0;
  23.         String mA[] = new String[n];   // создаем матрицу
  24.         for (int i = 0; i < n; i++) {
  25.             mA[i] = in.nextLine();
  26.         }
  27.         for (int i = n - 1; i > -1; i--) {
  28.             for (int j = 0; j < m; j++) {
  29.                 if (mA[i].charAt(j) == '1') {
  30.                     iC = i;
  31.                     jC = j;
  32.                 }
  33.             }                           // проходимся по массиву, ищем крайнюю верхню точку
  34.         }
  35.         for (int j = m - 1; j > -1; j--) {
  36.             for (int i = 0; i < n; i++) {
  37.                 if (mA[i].charAt(j) == '1') {
  38.                     iA = i;
  39.                     jA = j;
  40.                 }
  41.             }                          // проходимся по массиву, ищем крайнюю левую нижнюю точку
  42.         }
  43.         for (int j = 0; j < m; j++) {
  44.             for (int i = 0; i < n; i++) {
  45.                 if (mA[i].charAt(j) == '1') {
  46.                     iB1 = i;
  47.                     jB1 = j;
  48.                 }
  49.             }                         // проходимся по массиву, ищем крайнюю правую нижнюю точку
  50.         }
  51.         for (int j = 0; j < m; j++) {
  52.             for (int i = n - 1; i > -1; i--) {
  53.                 if (mA[i].charAt(j) == '1') {
  54.                     iB = i;
  55.                     jB = j;
  56.                 }
  57.             }                        // проходимся по массиву, ищем крайнюю правую верхнюю точку
  58.         }
  59.         System.out.println(iA + " " + jA);
  60.         System.out.println(iB + " " + jB);
  61.         System.out.println(iC + " " + jC);
  62.         System.out.println(iB1 + " " + jB1);
  63.         double sumAC = 0;
  64.         int katetAC = 1;
  65.         int iSAC = iA;
  66.         int jSAC = jA;
  67.         for (int i = 0; i < jC - jA; i++) {
  68.             if (mA[iSAC - 1].charAt(jSAC) == '0') {
  69.                 katetAC++;
  70.                 jSAC++;
  71.             } else {
  72.                 sumAC += (Math.sqrt(katetAC * katetAC + 1) - katetAC);
  73.                 iSAC--;
  74.             }
  75.         }                                   // идем по ступеничкам и считаем длину сверху слева
  76.         System.out.println(sumAC + jC - jA);
  77.  
  78.         double sumBC = 0;
  79.         int katetBC = 1;
  80.         int iSBC = iB;
  81.         int jSBC = jB;
  82.         for (int i = 0; i < jB - jC; i++) {
  83.             if (mA[iSBC - 1].charAt(jSBC) == '0') {
  84.                 katetBC++;
  85.                 jSBC--;
  86.             } else {
  87.                 sumBC += (Math.sqrt(katetBC * katetBC + 1) - katetBC);
  88.                 iSBC--;
  89.             }
  90.         }                                 // идем по ступеничкам и считаем длину сверху справа
  91.        
  92.  
  93.         double BA = 100 * Math.sqrt((jA - jB1) * (jA - jB1) + (iA - iB1) * (iA - iB1));   // ищем длину крыла снизу
  94.  
  95.         System.out.println(sumBC + jB - jC);
  96.         double SUM = 100 * (sumBC + jB - jC + sumAC + jC - jA);   // и суммарную сверху
  97.         System.out.println(Math.ceil(SUM) / 100);
  98.  
  99.  
  100.         System.out.println(Math.ceil(BA) / 100);
  101.  
  102.         double upperPlane = (Math.ceil(SUM) / 100) / SCALE / 4000;
  103.         double lowerPlane = (Math.ceil(BA) / 100) / SCALE / 4000;
  104.  
  105.         double airDensity = 1.2250;
  106.         double dP = airDensity * speed * speed / 2 * ((upperPlane * upperPlane) / (lowerPlane * lowerPlane) - 1);
  107.         double F = 100 * dP * lowerPlane * wingLength;
  108.         System.out.println("Подъемная сила - " + Math.ceil(F) / 100 + " Ньютонов.");
  109.         in.close();
  110.     }
  111. }
Add Comment
Please, Sign In to add comment