Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Задачи по Java (http://www.tehnari.ru/f41/t94245/)

princdemon 31.01.2014 23:34

Прошу пожалуйстк помогите с задачами

Найти произведение двух произвольных матриц

Gruvi 17.02.2014 00:09

Перемножение матриц класс 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;
  }
}



Часовой пояс GMT +4, время: 02:54.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.