Показать сообщение отдельно
Старый 17.02.2014, 00:09   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Перемножение матриц класс Matrixes.java:
Код:
import java.util.Scanner;
 
public class Matrixes {
   private static Scanner in = new Scanner(System.in);
 
   public static void main(String[] args) {
      Matrixes matrixes = new Matrixes();
      Matrix first = matrixes.read();
      Matrix second = matrixes.read();
      Matrix product = matrixes.product(first, second);
      if (product == null)
         System.out.println("Эти матрицы не могут быть умножены");
      else
         matrixes.print(product);
   }
 
   // ---------------------------------------
   Matrix read() {
      System.out.println("Введите размерность массива");
      int row = in.nextInt();
      int column = in.nextInt();
      Matrix mass = new Matrix(row, column);
      System.out.println("Введите элементы этого массива");
      for (int i = 0; i < mass.rows(); i++)
         for (int j = 0; j < mass.columns(); j++) {
            double temp = in.nextDouble();
            mass.update(i, j, temp);
         }
      return mass;
   }
 
   // ---------------------------------------
   void print(Matrix matrix) {
      for (int i = 0; i < matrix.rows(); ++i, System.out.println())
         for (int j = 0; j < matrix.columns(); ++j)
            System.out.printf(" %10.4f", matrix.element(i, j));
   }
 
   // ---------------------------------------
   Matrix product(Matrix first, Matrix second) {
      int row1 = first.rows(), col1 = first.columns(), row2 = second.rows(), col2 = 
         second.columns();
      Matrix res = new Matrix(first.rows(), second.columns());
      if (col1 == row2) {
         for (int i = 0; i < row1; i++)
            for (int k = 0; k < col2; k++)
               for (int j = 0; j < row2; j++)
                  res.update(i, k, res.element(i, k) + first.element(i, j)
                        * second.element(j, k));
         return res;
      } else
         return null;
   }
}
Класс Matrix.java:
Код:
public class Matrix {
 
   // ----------------------------------------
   int m, n;
 
   // ----------------------------------------
   public Matrix(int rows, int columns) {
      m = rows;
      n = columns;
      massiv = new double[m][n];
   }
 
   double[][] massiv;
 
   // ----------------------------------------
   int rows() {
      return m;
   }
 
   // ----------------------------------------
   int columns() {
      return n;
   }
 
   // ----------------------------------------
   double element(int row, int column) {
      return massiv[row][column];
   }
 
   // ----------------------------------------
   void update(int row, int column, double value) {
      massiv[row][column] = value;
   }
 
   // ---------------------------------------
   double[] row(int index) {
      return massiv[index];
   }
 
   // ----------------------------------------
   double[] column(int index) {
      double[] temp = new double[this.n];
      for (int i = 0; i < index; i++)
         massiv[i][index] = temp[i];
      return temp;
   }
}
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070