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

Определить класс Matrix размерности n*n

25.12.2023, 06:33. Показов 1073. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определить класс Matrix размерности nxn. Класс должен содержать несколько конструкторов. Реализовать методы вывода матрицы на экран, методы определения и получения размерности матрицы и самой матрицы.
Необходимо реализовать матрицу как объект класса Matrix, в нем реализовать конструкторы и методы. Показать принципы ООП.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2023, 06:33
Ответы с готовыми решениями:

Класс: Реализовать класс Matrix - матрица, на основе двухмерного массива размерности M на N...
1) Реализовать класс Matrix - матрица, на основе двух-мерного целочисленного массива int размерности M на N (кол-во строк и кол-во...

Определить класс «Квадратная матрица» – Matrix. Класс должен содержать несколько конструкторов, в том числе ко
Определить класс «Квадратная матрица» – Matrix. Класс должен содержать несколько конструкторов, в том числе конструктор копирования....

Определить класс «Квадратная матрица» – Matrix.
Определить класс «Квадратная матрица» – Matrix. Класс должен содержать несколько конструкторов, в том числе конструктор ко-пирования. ...

4
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
25.12.2023, 14:35
Лучший ответ Сообщение было отмечено newvirinin как решение

Решение

Что-то типа такого. 2 конструктора. Без параметров создает матрицу с одним элементом, с параметром - размером n x n. printMatrix печатает матрицу, getMatrixSize выводит сообщение с размером матрицы. Инициализация матриц производится с консоли внутри конструктора; через пробел вводятся элементы каждой строки, затем нажимается enter и так для каждой строки матрицы. Например есть матрица 3 х 3. Вводим 1 2 3 enter, 4 5 6 enter, 7 8 9 enter.
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
49
50
51
52
public class Matrix {
    private int n;
    private int[][] matrix;
    Scanner in = new Scanner(System.in);
 
    public Matrix() {
        n = 1;
        matrix = new int[n][n];
        matrix[0][0] = in.nextInt();
    }
 
    public Matrix(int n) {
        this.n = n;
        matrix = new int[n][n];
        for (int i = 0; i < this.matrix.length; i++) {
            for (int j = 0; j < this.matrix.length; j++) {
                matrix[i][j] = in.nextInt();
            }
        }
    }
 
    public int getN() {
        return n;
    }
 
    void printMatrix() {
        for (int i = 0; i < this.matrix.length; i++) {
            for (int j = 0; j < this.matrix.length; j++) {
                if (j == this.matrix.length - 1) {
                    System.out.print(this.matrix[i][j]);
                } else {
                    System.out.print(this.matrix[i][j] + " ");
                }
            }
            System.out.println();
        }
    }
 
    void getMatrixSize() {
        System.out.println("This matrix size is " + this.getN() + "x" + this.getN());
    }
 
    public static void main(String[] args) {
        Matrix matrix1 = new Matrix(2);
        matrix1.printMatrix();
        matrix1.getMatrixSize();
 
        Matrix matrix2 = new Matrix();
        matrix2.printMatrix();
        matrix2.getMatrixSize();
    }
}
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,192
27.12.2023, 10:43
DOKTOP_JIEKTEP, смотри чего еще я начитался...

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
49
50
51
52
53
54
55
56
/**
 * Тестовая программа
 */
public class Test {
    public static void main(String[] args) {
        Mtr<Integer> f1 = n -> new Integer[n][n];
        Matrix<Integer> m1 = new Matrix<>(f1, 3);
        m1.printMatrix();
        Mtr<String> f2 = n -> new String[n][n];
        Matrix<String> m2 = new Matrix<>(f2, 3, "Пример");
        m2.printMatrix();
    }
    
}
 
/**
 * Матрица
 */
class Matrix<T> {
    int n;
    T[][] m;
    Matrix(Mtr<T> f, int n) {
        this.n = n;
        m = f.crt(n);
    }
    Matrix(Mtr<T> f, int n, T v) {
        this.n = n;
        m = f.crt(n);
        for (int i = 0; i < m.length; i++) {
            for (int j = 0; j < m[i].length; j++) {
                m[i][j] = v;
            }
        }
    }
    public int getN() {
        return n;
    }
    void printMatrix() {
        for (int i = 0; i < m.length; i++) {
            for (int j = 0; j < m[i].length; j++) {
                System.out.print(m[i][j]);
                if (j < m[i].length - 1) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
   }
}
 
/**
 * Создание матрицы
 */
interface Mtr<T> {
    T[][] crt(int n);
}
2
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
27.12.2023, 16:27
krvsa, ох уж эти книжки)
0
8 / 5 / 3
Регистрация: 17.02.2022
Сообщений: 27
02.01.2024, 21:51
Вот получившийся у меня класс:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
 * класс, представляющий собой квадратную матрицу NxN
 */
public class Matrix {
    private int size;
    private int[][] values;
 
    public Matrix(int size) {
        updateValuesAccordingToSize(size);
    }
 
    public Matrix(int[][] values) {
        this.size = values.length;
        this.values = values;
    }
 
    public int getSize() {
        return size;
    }
 
    public void setSize(int size) {
        this.size = size;
        updateValuesAccordingToSize(size);
    }
 
    public int[][] getValues() {
        return values;
    }
 
    public void setValues(int[][] values) {
        this.values = values;
    }
 
    /**
     * обновить значения матрицы
     * в соответствии с заданным размером
     */
    private void updateValuesAccordingToSize(int newSize) {
        values = new int[newSize][newSize];
    }
 
    /**
     * получить строковое представление матрицы
     */
    @Override
    public String toString() {
        if (size == 0) {
            return "";
        }
 
        StringBuilder sb = new StringBuilder();
        for (int row = 0; row < size; row++) {
            for (int column = 0; column < size; column++) {
                sb.append(values[row][column]).append("\t");
            }
            sb.append("\n");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}
Здесь класс Matrix ответственен за одну и только одну задачу, то есть соблюдает принцип единственной ответственности. Согласно парадигме ООП, он представляет собой сущность - объект - матрицу. Например, объект Matrix не должен уметь выводить себя в консоль. Он должен уметь только формировать строковое описание себя. Так как иначе это было бы нарушением принципа единственной ответственности. Кто знает, куда понадобится выводить эту матрицу? В консоль, на форму, отправлять на почту, сохранять в файл docx?

Результат работы программы:


Файл MyProject.java:
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
import java.util.Scanner;
 
public class MyProject {
    public static void main(String[] args) {
        Matrix matrix = new Matrix(getTwoDimArrayFromInput());
        System.out.println(matrix.toString());
    }
 
    /**
     * получить введённый пользователем двумерный массив
     */
    private static int[][] getTwoDimArrayFromInput() {
        Scanner scanner = new Scanner(System.in);
 
        System.out.print("Введите размер квадратной матрицы -> ");
        int size = scanner.nextInt();
 
        System.out.println("Теперь вводите по " + size + " элементов в строке, всего " + size + " строк");
        int[][] array = new int[size][size];
        for (int row = 0; row < size; row++) {
            for (int column = 0; column < size; column++) {
                array[row][column] = scanner.nextInt();
            }
        }
        return array;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2024, 21:51
Помогаю со студенческими работами здесь

Определить класс векторов размерности 3 и определить функции-члены
Объявить класс векторов размерности 3. Переопределить для него операции сложения, и произведения (как векторного). Ввести с консоли или из...

Определить класс векторов размерности n
Определить класс векторов размерности n. Создать конструкторы и деструктор.

Описать тип-объект MATRIX (квадратная матрица размерности N*N)
Описать тип-объект MATRIX (квадратная матрица размерности N*N) и его методы: ввод матрицы; вывод матрицы; удаление строк, где максимальный...

Описать тип-объект MATRIX (матрица произвольной размерности M*N) и его методы
Описать тип-объект MATRIX (матрица произвольной размерности M*N) и его методы: ввод матрицы; вывод матрицы; создание вектора столбцов...

Класс Matrix: реализовать шаблонный класс для двумерных массивов
Доброго времени суток. У меня вопрос: я создал класс Array со внутренним динамическим массивом и объекты этого типа смог создать и я ими...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru