Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] Программа с матрицами


Автор: deuterium 25.3.2008, 19:41
Народ, помогите пожалуйста написать программу, которая находит максимальный элемент в одной матрице и минимальный элемент в другой, и переставляет местами столбцы, содержащие эти элементы.

Автор: Shurr 27.3.2008, 14:02
Лови.

Matrix.java
Код
import java.util.Random;

public class Matrix {

    private static Random random = new Random();

    public static void main(String[] args) {
        int[][] matrix1 = createMatrix(5, 5);
        int[][] matrix2 = createMatrix(5, 5);

        System.out.println("Matrix 1, original:");
        showMatrix(matrix1);
        System.out.println("Matrix 2, original:");
        showMatrix(matrix2);

        int column1 = getColumnWithMinValue(matrix1);
        int column2 = getColumnWithMaxValue(matrix2);

        swapColumns(matrix1, column1, matrix2, column2);

        System.out.println("Matrix 1, swapped:");
        showMatrix(matrix1);
        System.out.println("Matrix 2, swapped:");
        showMatrix(matrix2);

    }

    private static int[][] createMatrix(int rowCount, int columnsCount) {
        int[][] matrix = new int[rowCount][columnsCount];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = random.nextInt(100);
            }
        }
        return matrix;
    }

    private static void showMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.printf("%3d ", matrix[i][j]);
            }
            System.out.print("\n");
        }
    }

    private static int getColumnWithMinValue(int[][] matrix) {
        int row = 0;
        int column = 0;
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] < matrix[row][column]) {
                    row = i;
                    column = j;
                }
            }
        }
        return column;
    }

    private static int getColumnWithMaxValue(int[][] matrix) {
        int row = 0;
        int column = 0;
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] > matrix[row][column]) {
                    row = i;
                    column = j;
                }
            }
        }
        return column;
    }

    private static void swapColumns(int[][] matrix1, int column1, int[][] matrix2, int column2) {
        for (int i = 0; i < matrix1.length; i++) {
            int value = matrix1[i][column1];
            matrix1[i][column1] = matrix2[i][column2];
            matrix2[i][column2] = value;
        }
    }

}

Автор: deuterium 29.4.2008, 21:16
Shurr, Огромное спасибо.
Только вот такая странная проблема.
У меня дома эта прога отлично работает, а вот в институте выдает ошибку на строчку
Код

System.out.printf("%3d ", matrix[i][j]);


а именно на "%3d "
 
Как с этим быть, можно ли её чем-нибудь заменить. Мне просто необходимо, чтобы прога работала именно в институте, сам понимаешь. smile 
Помоги пожалуйста

Автор: LSD 1.5.2008, 11:35
Какая версия JDK стоит в институте?

Автор: deuterium 1.5.2008, 16:20
У меня дома такая: JDK Update 4 
А про институтскую точно не знаю, но точно должна быть более древняя.

Автор: LSD 2.5.2008, 18:41
Цитата(deuterium @  1.5.2008,  17:20 Найти цитируемый пост)
У меня дома такая: JDK Update 4 

Нет такой версии JDK, должна быть 1.6/1.5/1.4 и т.д. Набираешь
Код

java -version

и получаешь версию JDK.

Если в институте версия 1.5, то достаточно будет взять исходник и перекомпилировать.

Если более древняя, то простейший вариант:
Код

    private static void showMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }

но матрица будет "съезжать".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)