Домашняя работа о Матрице, содержащей другую матрицу (Проверьте, является ли истина или ложь) - PullRequest
0 голосов
/ 13 апреля 2019

Таким образом, инструкции состоят в том, чтобы создать матрицу 10x10 и рандомизировать значения от 1 до 20 для каждого индекса. Затем попросите пользователя ввести 6 чисел от 1 до 20 и использовать эти числа для создания другой матрицы 2x3.Затем программа должна проверить, содержит ли матрица 10x10 матрицу 2x3 от пользователя.Также я не могу использовать функции.

Пример для ввода:

Введите число 1 в матрице: 17 Введите число 2 в матрице: 17 Введите число 3 в матрице: 17Введите число 4 в матрице: 5 Введите число 5 в матрице: 13 Введите число 6 в матрице: 14

Вывод:

Случайная матрица:

14 143 18 2 10 19 10 3 3

2 17 15 16 5 17 7 17 15 10

13 1 3 9 5 4 11 9 1 8

17 14 13 98 1 18 3 17 18

12 17 5 14 13 4 16 14 13 4

8 12 8 19 6 5 3 3 14 18

16 16 17 9 9 1017 3 8 5

13 8 6 17 6 ​​17 17 7 19 5

5 14 6 15 11 11 13 17 17 17

17 13 13 18 11 4 15 513 14

Введенная вами матрица:

17 17 17

5 13 14

Случайная матрица содержит матрицу пользователей.

Мой код до сих пор =

            int[][] big = new int[10][10];
            int[][] small =new int [][] {{the1,the2,the3},{the4,the5,the6}};

            for(int i = 0; i < big.length; i++ )
            {
                for(int j = 0; j < big[i].length; j++)
                {
                    big[i][j]= (int)((Math.random()*20)+1);

                }

            }
            for(int i =0; i < big.length; i++)
            {
                for(int j = 0; j < big.length; j++)
                {
                    Boolean isEqual=true;
                    for(int k = 0; k < 2 && isEqual; k++)
                    {
                        for(int m = 0; m < 3; m++)
                        {
                            if (big[i+k][j+m]!=small[k][m])
                            {
                                isEqual=false;
                                break;
                            }
                        }
                    }
                }
            }

Моя общая идея в основном проходила по индексам большой матрицы при проверкедля равных чисел, и если он найден, процедура продолжается, в противном случае она прерывается и идет к следующему индексу в большой матрице.

1 Ответ

0 голосов
/ 14 апреля 2019

Ваша общая идея верна и должна работать для описанного сценария. Единственная проблема, с которой вы сталкиваетесь, - это ваше заявление на перерыв до сих пор работает, как вы думаете.

Согласно вложенному циклу, если вы поместите оператор break во внутренний цикл, компилятор выпрыгнет из внутреннего цикла и продолжит внешний цикл снова. Если вам нужно выпрыгнуть из внешнего цикла, используя оператор break, заданный во внутреннем цикле, вы можете использовать помеченный цикл, т.е. дать вашему циклу имя и использовать его с оператором break.

В приведенном выше коде вы не только нарушаете самый внутренний цикл, но и вышеприведенный:

    public static void main(String[] args) {
        int[][] big = new int[10][10];
        int[][] small = new int[][]{{12, 13, 14}, {13, 14, 15}};
        for (int i = 0; i < big.length; i++) {
            for (int j = 0; j < big[i].length; j++) {
                big[i][j]= (int)((Math.random()*20)+1);
            }
        }
        // just added this loop to print the random array so you can check the output
        for(int[] row : big){
            System.out.println(Arrays.toString(row));
        }
        for(int i = 0; i<big.length-1; i++){
            for(int j = 0; j<big[0].length-2; j++){
                boolean isEqual = true;
  LoopIwannaBreak:for(int k = 0; k<small.length; k++){
                    for(int m = 0; m<small[0].length; m++){
                        if(big[i+k][j+m] != small[k][m]){
                            isEqual = false;
                            break LoopIwannaBreak;
                        }
                    }
                }
                // added this to tell at which index the match was found
               if(isEqual){
                   System.out.println("found at big["+i+"]["+j+"]");
               }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...