Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15

Описать абстрактный класс для представления квадратной матрицы

21.02.2015, 18:12. Показов 1794. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Нужна помощь. После теории дали такое задание. А именно:
________________________________________ ________________________________________ _______________________
Описать абстрактный класс для представления квадратной матрицы размерности n×n. Объявить абстрактные методы доступа к элементам и получения n. Реализовать следующие функции:

-перемножения квадратных матриц
-вычисления определителя путем сведения к вычислению определителей низших порядков (если матрица квадратная);реализовать вариант с рекурсивной функцией
-вычисления обратной матрицы.
________________________________________ ________________________________________ _______________________
Пока что дальше перемножения не ушел, так как не могу доделать алгоритм.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public abstract class Matrix {
    
    public abstract double setEl(int i, int j, double value);
    
    public abstract double getEl(int i, int j);
    
    public abstract double getSize();
    
    public abstract double[][] createMatrix(int n);
    
    
    
    public Matrix matrixMultiply(Matrix a, Matrix b){   
        double[][] result = createMatrix((int) a.getSize());
                
        for (int i = 0; i < a.getSize(); i++) {
            for (int j = 0; j < b.getSize(); j++) {
                int temp = 0;
                for (int k = 0; k < temp; k++) {
                    temp += a.getEl(i, k) * b.getEl(k, j);
                }
                result.setEl(i, j, temp);  // тут выдает ошибку
            }
        }
        return ;   // тут не могу понять, что нужно возвращать
    }
}

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class MatrixCreator extends Matrix {
 
    private double [][] matrix;
    private double n;
    
    
    public MatrixCreator(double n){
        createMatrix((int) n);
    }
    
    public void showMatrix(){
        System.out.println("Matrix 1: " + matrix.length + "x" + matrix[0].length);
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
 
    @Override
    public double[][] createMatrix(int n) {
        matrix = new double [n] [n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrix [i][j] = (int)(Math.random()*5);
            }
        }
        return matrix;
    }
 
    @Override
    public double getSize() {
        return matrix.length;
    }
    @Override
    public double setEl(int i, int j, double value) {
        return matrix [i][j] = value;
    }
    @Override
    public double getEl(int i, int j) {
        return matrix[i][j];
    }
}
Буду весьма признателен за помощь. Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2015, 18:12
Ответы с готовыми решениями:

Создать абстрактный базовый класс Triangle для представления треугольника с абстрактными методы вычисления площади и периметра
Помогите разобраться с программой. Очень нужно!!! Создать абстрактный базовый класс Triangle для представления треугольника с...

Класс: Создать классы для представления матрицы в координатном формате.
Задаться матрицей размерностью (80 x 80). Создать классы для представления матрицы в координатном формате. Предусмотреть методы для...

Описать абстрактный класс для операции
Опишите абстрактный класс объектов, для которых определены операции ==, =, !=. Операцию == определите полностью для случая, когда объекты...

4
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15
22.02.2015, 21:32  [ТС]
Спустя сутки появились кое-какие модификации, но алгоритм по перемножению матриц работает не верно.
Помогите плз, я уже смотрю в код и ничего не понимаю.
Вот изменения:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public abstract class Matrix {
    
    public abstract double setEl(int i, int j, double value);
    
    public abstract double getEl(int i, int j);
    
    public abstract double getSize();
    
    public abstract double[][] createMatrix(int n);
    
    
    
    public double[][] matrixMultiply(Matrix a, Matrix b){
        
        System.out.println("\nMatrix multiplication result:");
        
        double[][] result = new double [(int) a.getSize()][(int) b.getSize()];   
        for (int i = 0; i < a.getSize(); i++) {
            for (int j = 0; j < b.getSize(); j++) {
                System.out.print((result [i][j] = a.getEl(i, j) * b.getEl(i, j)) + " ");
            }
            System.out.println();
        }
        return result;
    }
}

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class MatrixCreator extends Matrix {
 
    private double [][] matrix;
    private double n;
    
    public MatrixCreator(){
        
    }
    public MatrixCreator(double n){
        this.n = n;
        createMatrix((int) n);
        showMatrix();
    }
    
    public void showMatrix(){
        System.out.println("Matrix: " + matrix.length + "x" + matrix[0].length);
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
 
    @Override
    public double[][] createMatrix(int n) {
        matrix = new double [n] [n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                matrix [i][j] = (int)(Math.random()*5);
            }
        }
        return matrix;
    }
 
    @Override
    public double getSize() {
        return matrix.length;
    }
    @Override
    public double setEl(int i, int j, double value) {
        return matrix [i][j] = value;
    }
    @Override
    public double getEl(int i, int j) {
        return matrix[i][j];
    }
}
Тестирую так:
Java
1
2
3
4
5
6
public class TestMatrix {
    public static void main (String [] args){
        MatrixCreator myMatrix = new MatrixCreator();
        myMatrix.matrixMultiply(new MatrixCreator(3), new MatrixCreator(3));
    }
}
Вывод результата перемножения матриц не верный
Matrix: 3x3
1.0 2.0 3.0
0.0 1.0 4.0
0.0 2.0 3.0

Matrix: 3x3
4.0 4.0 4.0
0.0 3.0 3.0
0.0 4.0 1.0

Matrix multiplication result:
4.0 8.0 12.0
0.0 3.0 12.0
0.0 8.0 3.0
0
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
22.02.2015, 21:37
mosdenvik,
Java
1
 result [i][j] += a.getEl(i, j) * b.getEl(i, j);
0
1 / 1 / 0
Регистрация: 09.01.2015
Сообщений: 15
22.02.2015, 22:29  [ТС]
К сожалению, проблема не решена
0
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
22.02.2015, 23:40
mosdenvik,
Умножение матриц
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
   int[][] a = new int[2][3];
        int[][] b = new int[3][4];
 
 
        fillMatrix(a);
        fillMatrix(b);
 
 
        showMatrix(a);
        showMatrix(b);
 
        int [] [] c = multMatrix(a,b);
        showMatrix(c);
 
    }
    static void fillMatrix(int [] [] a) {
 
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                a[i][j]=(int)(Math.random()*10);
            }
        }
    }
 
    static  void showMatrix(int [] [] a) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j] + " ");
            }System.out.println();
        }
        System.out.println();
    }
 
 
    static int[][] multMatrix(int[][] a, int[][] b) {
 
        int [] [] c = new int [a.length] [b[0].length];
 
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < b[0].length; j++) {
                    for (int l = 0; l < b.length; l++) {
                        c[i][j] += a[i][l] * b[l][j];
                }
            }
        }
 
        return c;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2015, 23:40
Помогаю со студенческими работами здесь

Описать класс для представления даты
Описати клас для представлення дати. Поивинні бути визначені: - можливість встановлення дати та зміни її окремих полів (рік, місяць,...

Описать абстрактный класс Element для работы с логикой
Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, ...

Описать класс для представления массива бит
Здравствуете, уважаемые форумчане, помогите чем можете в решении задачи в консоли в Delphi: Любые мысли и идеи принимаются...

Описать класс, обеспечивающий представление квадратной матрицы произвольного размера
Составить описание класса, обеспечивающего представление квадратной матрицы произвольного размера. Предусмотреть возможность сложения и...

Описать абстрактный класс для хранения информации геометрических фигурах.
Описать абстрактный класс для хранения информации геометрических фигурах.Использовать его тестовой программе. я попробовал описать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru