Advertisement
Uimin_Maxim

Задача

Jan 27th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.89 KB | None | 0 0
  1. //Уймин Максим
  2. //IT School, группа MP54
  3. //22.10.2015
  4. //Задача 16. Дана матрица размера M*N
  5. //В каждом ее столбце найти количество элементов, больших среднего геометрического всех элементов этого столбца.
  6. import java.io.PrintStream;
  7. import java.util.Scanner;
  8. public class Task_home {
  9.     //Основной класс
  10.     public static PrintStream out = System.out;
  11.     public static Scanner scan = new Scanner(System.in);
  12.     public class DoubleMatrix{
  13.         //Класс для работы с дробными матрицами
  14.         public double[][] DoubleMatrix;
  15.         //Метод создаёт дробную матрицу
  16.         public DoubleMatrix (int N, int M){
  17.             DoubleMatrix = new double [N][M];
  18.         }
  19.         public void PrintMatrix(){
  20.             //Метод выводит дробную матрицу размера m*n на экран
  21.             for (int i=0;i<DoubleMatrix.length;i++){
  22.                 for (int j=0;j<DoubleMatrix[i].length;j++){
  23.                     out.print(DoubleMatrix[i][j] + "\t");
  24.                 }
  25.                 out.println();
  26.             }
  27.         }
  28.     }
  29.     public class Matrix{
  30.         //Класс для работы с целочисленными матрицами
  31.         public int[][] Matrix;
  32.             //Методы конструктора
  33.             public Matrix(int n,int m){
  34.                 //Метод создаёт матрицу считанного с клавиатуры размера
  35.                 if (n==0||m==0){
  36.                     out.println("Введите значение N(строк) и M(столбцов), для создания матрицы:");
  37.                     int N=scan.nextInt();
  38.                     int M=scan.nextInt();
  39.                     Matrix = new int [N][M];
  40.                 }
  41.                 else Matrix = new int [n][m];
  42.             }
  43.             public void FillMatrixRandom(){
  44.                 //Метод заполеняет матрицу случайными числами от -10 до 10
  45.                 for (int i=0;i<Matrix.length;i++){
  46.                     for (int j=0;j<Matrix[i].length;j++){
  47.                         Matrix[i][j] = (-10) + (int)(Math.random()*((10-(-10))+1));
  48.                     }
  49.                 }
  50.             }
  51.             public void PrintMatrix(){
  52.                 //Метод выводит матрицу размера m*n на экран
  53.                 for (int i=0;i<Matrix.length;i++){
  54.                     for (int j=0;j<Matrix[i].length;j++){
  55.                         out.print(Matrix[i][j] + "\t");
  56.                     }
  57.                     out.println();
  58.                 }
  59.             }
  60.            
  61.         }
  62.             public int CountElements(int[] array,double value){
  63.                 //Метод считает количество элементов массмва, которые больше заданного значения
  64.                 int k=0;
  65.                     for (int i=0;i<array.length;i++){
  66.                         if (array[i]<value)k++;
  67.                     }
  68.                 return k;
  69.             }
  70.     public static double GeoMean (Matrix array, int i){
  71.         //Метод находит среднее геометрическое столбца матрицы
  72.         double g=1;
  73.         for (int j=0;j<array.Matrix[i].length;j++){
  74.             g=g*array.Matrix[i][j];
  75.         }
  76.         g=Math.pow(g, 1/array.Matrix[i].length);
  77.         return g;
  78.     }
  79.    
  80.     public class AnotherClass{
  81.         //Дополнительный класс
  82.         public void main(String [] args){
  83.             //Основная функция, отсюда начинается выполнение программы
  84.             Matrix matrix = new Matrix(0,0);
  85.             matrix.FillMatrixRandom();
  86.             out.println("Original matrix:");
  87.             matrix.PrintMatrix();
  88.             DoubleMatrix GeoMeanArray = new DoubleMatrix(1,matrix.Matrix.length);
  89.             for (int i=0;i<GeoMeanArray.DoubleMatrix.length;i++){
  90.                 GeoMeanArray.DoubleMatrix[1][i] = GeoMean(matrix,i);
  91.             }
  92.             out.println("Geometric mean of each column:");
  93.             GeoMeanArray.PrintMatrix();
  94.             Matrix Count = new Matrix(1,matrix.Matrix.length);
  95.             for (int i=0;i<GeoMeanArray.DoubleMatrix.length;i++){
  96.                 Count.Matrix[1][i] = CountElements(matrix.Matrix[i],GeoMeanArray.DoubleMatrix[1][i]);
  97.             }
  98.             out.println("Number of elements in each column that greater than geometric mean of each column: ");
  99.             Count.PrintMatrix();
  100.         }
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement