Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Уймин Максим
- //IT School, группа MP54
- //22.10.2015
- //Задача 16. Дана матрица размера M*N
- //В каждом ее столбце найти количество элементов, больших среднего геометрического всех элементов этого столбца.
- import java.io.PrintStream;
- import java.util.Scanner;
- public class Task_home {
- //Основной класс
- public static PrintStream out = System.out;
- public static Scanner scan = new Scanner(System.in);
- public class DoubleMatrix{
- //Класс для работы с дробными матрицами
- public double[][] DoubleMatrix;
- //Метод создаёт дробную матрицу
- public DoubleMatrix (int N, int M){
- DoubleMatrix = new double [N][M];
- }
- public void PrintMatrix(){
- //Метод выводит дробную матрицу размера m*n на экран
- for (int i=0;i<DoubleMatrix.length;i++){
- for (int j=0;j<DoubleMatrix[i].length;j++){
- out.print(DoubleMatrix[i][j] + "\t");
- }
- out.println();
- }
- }
- }
- public class Matrix{
- //Класс для работы с целочисленными матрицами
- public int[][] Matrix;
- //Методы конструктора
- public Matrix(int n,int m){
- //Метод создаёт матрицу считанного с клавиатуры размера
- if (n==0||m==0){
- out.println("Введите значение N(строк) и M(столбцов), для создания матрицы:");
- int N=scan.nextInt();
- int M=scan.nextInt();
- Matrix = new int [N][M];
- }
- else Matrix = new int [n][m];
- }
- public void FillMatrixRandom(){
- //Метод заполеняет матрицу случайными числами от -10 до 10
- for (int i=0;i<Matrix.length;i++){
- for (int j=0;j<Matrix[i].length;j++){
- Matrix[i][j] = (-10) + (int)(Math.random()*((10-(-10))+1));
- }
- }
- }
- public void PrintMatrix(){
- //Метод выводит матрицу размера m*n на экран
- for (int i=0;i<Matrix.length;i++){
- for (int j=0;j<Matrix[i].length;j++){
- out.print(Matrix[i][j] + "\t");
- }
- out.println();
- }
- }
- }
- public int CountElements(int[] array,double value){
- //Метод считает количество элементов массмва, которые больше заданного значения
- int k=0;
- for (int i=0;i<array.length;i++){
- if (array[i]<value)k++;
- }
- return k;
- }
- public static double GeoMean (Matrix array, int i){
- //Метод находит среднее геометрическое столбца матрицы
- double g=1;
- for (int j=0;j<array.Matrix[i].length;j++){
- g=g*array.Matrix[i][j];
- }
- g=Math.pow(g, 1/array.Matrix[i].length);
- return g;
- }
- public class AnotherClass{
- //Дополнительный класс
- public void main(String [] args){
- //Основная функция, отсюда начинается выполнение программы
- Matrix matrix = new Matrix(0,0);
- matrix.FillMatrixRandom();
- out.println("Original matrix:");
- matrix.PrintMatrix();
- DoubleMatrix GeoMeanArray = new DoubleMatrix(1,matrix.Matrix.length);
- for (int i=0;i<GeoMeanArray.DoubleMatrix.length;i++){
- GeoMeanArray.DoubleMatrix[1][i] = GeoMean(matrix,i);
- }
- out.println("Geometric mean of each column:");
- GeoMeanArray.PrintMatrix();
- Matrix Count = new Matrix(1,matrix.Matrix.length);
- for (int i=0;i<GeoMeanArray.DoubleMatrix.length;i++){
- Count.Matrix[1][i] = CountElements(matrix.Matrix[i],GeoMeanArray.DoubleMatrix[1][i]);
- }
- out.println("Number of elements in each column that greater than geometric mean of each column: ");
- Count.PrintMatrix();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement