Не удается найти символы a и b при вращении матрицы - PullRequest
1 голос
/ 10 января 2020

Это код для поворота матрицы по часовой стрелке и против часовой стрелки на k элементах. Я получаю сообщение об ошибке, не могу найти символ при запуске этого кода. Если я запускаю это по отдельности, я заметил еще одну ошибку, заключающуюся в том, что он не может вращаться против часовой стрелки для элементов более 3 × 3, независимо от того, увеличиваю я M или N, он не может вращаться против часовой стрелки.

Main

import java.lang.*;
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int R=sc.nextInt();
        int C=sc.nextInt();
        int matrix[][]=new int[R][C];
        for(int i=0;i<R;i++){
        for(int j=0;j<C;j++){
            if(sc.hasNext()){
                int a=sc.nextInt();
                matrix[i][j]=a;
        }
        }
        }
        int rot=sc.nextInt();
        int matrix2[][]=matrix.clone();
        sc.close();
        Anti a=new Anti();
        a.rotatematrix(R, C, matrix,rot);
        clock c=new clock();
        c.antirotatematrix(R,C,matrix2,rot);
    }
}

класс Anti

class Anti{
    public void antirotatematrix(int m, 
                    int n, int mat[][],int rot) 
    { 
        int row = 0, col = n-1; 
        int prev, curr; 
        System.out.println("Anticlockwise Rotation");
        for( int a=0;a<rot;a++)
    {    while (row < m && col < n ) 
        { 
            if (row+1 == m || col  == 0) {
                break; }
            prev = mat[row + 1][col]; 
            for (int i = col; i>= 0; i--) 
            { 
                curr = mat[row][i]; 
                mat[row][i] = prev; 
                prev = curr; 
            } 
            row++; 

            for (int i = row; i < m; i++) 
            {  
                curr = mat[i][0]; 
                mat[i][0] = prev; 
                prev = curr; 
            }
            n--; 

            if (row < m) {
                for (int i = n-2; i <= col; i++) 
                { 
                    curr = mat[m-1][i]; 
                    mat[m-1][i] = prev; 
                    prev = curr; 
                } 
            } 
            m--;  
            if (col <= n) 
            { 
                for (int i = m-1; i >= row; i--) 
                { 
                    curr = mat[i][col]; 
                    mat[i][col] = prev; 
                    prev = curr; 
                } 
            } 
            col++; 
        }
    }
        for (int i = 0; i < m+1; i++) {
            { 
                for (int j = 0; j < n+1; j++) 
                System.out.print( mat[i][j] + " "); 
                System.out.print("\n"); 
            } 
    } 
    }
}

класс Clock

class clock{
    public void rotatematrix(int m, 
                    int n, int mat[][],int rot) 
    { 
        int row = 0, col = 0; 
        int prev, curr; 
        int matri[][]=new int[m][n];
        System.out.println("Clockwise Rotation");
        for(int b=0;b<rot;b++){
        while (row < m && col < n) 
        { 
            if (row + 1 == m || col + 1 == n) 
                break; 
            prev = mat[row + 1][col]; 
            for (int i = col; i < n; i++) 
            { 
                curr = mat[row][i]; 
                mat[row][i] = prev; 
                prev = curr; 
            } 
            row++; 
            for (int i = row; i < m; i++) 
            { 
                curr = mat[i][n-1]; 
                mat[i][n-1] = prev; 
                prev = curr; 
            } 
            n--; 
            if (row < m) 
            { 
                for (int i = n-1; i >= col; i--) 
                { 
                    curr = mat[m-1][i]; 
                    mat[m-1][i] = prev; 
                    prev = curr; 
                } 
            } 
            m--;
            if (col < n) 
            { 
                for (int i = m-1; i >= row; i--) 
                { 
                    curr = mat[i][col]; 
                    mat[i][col] = prev; 
                    prev = curr; 
                } 
            } 
            col++; 
        }
    }
    for (int i = 0; i < m+1; i++) {
            { 
                for (int j = 0; j < n+1; j++) 
                System.out.print( mat[i][j] + " "); 
                System.out.print("\n"); 
            } 
    } 
    }
}
...