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