Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- class Matrix<T>{
- int rows,columns;
- T [][] matrica;
- Matrix(int r,int c){
- matrica=(T[][]) new Object[r][c];
- rows=r;
- columns=c;
- }
- int getNumRows() {
- return rows;
- }
- int getNumColumns() {
- return columns;
- }
- T getElementAt(int row, int col) {
- return matrica[row][col];
- }
- void setElementAt(int row, int col, T value) {
- matrica[row][col]=value;
- }
- void fill(T element) {
- for(int i=0;i<rows;i++) {
- for(int j=0;j<columns;j++) {
- matrica[i][j]=element;
- }
- }
- }
- void insertRow(int row) throws ArrayIndexOutOfBoundsException {
- if(row<0 || row>rows) throw new ArrayIndexOutOfBoundsException();
- T[][] matrica1=(T[][]) new Object[rows+1][columns];
- for(int i=0;i<row;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=row+1;i<rows+1;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i][j]=matrica[i-1][j];
- }
- }
- matrica=matrica1;
- rows++;
- }
- void deleteRow(int row) {
- if(row<0 || row>rows) throw new ArrayIndexOutOfBoundsException();
- T[][] matrica1=(T[][]) new Object[rows-1][columns];
- for(int i=0;i<row;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=row+1;i<rows;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i-1][j]=matrica[i][j];
- }
- }
- matrica=matrica1;
- rows--;
- }
- void insertColumn(int col) {
- if(col<0 || col>columns) throw new ArrayIndexOutOfBoundsException();
- T[][] matrica1=(T[][]) new Object[rows][columns+1];
- for(int i=0;i<rows;i++) {
- for(int j=0;j<col;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=0;i<rows;i++) {
- for(int j=col+1;j<columns+1;j++) {
- matrica1[i][j]=matrica[i][j-1];
- }
- }
- matrica=matrica1;
- columns++;
- }
- void deleteColumn(int col) {
- if(col<0 || col>columns) throw new ArrayIndexOutOfBoundsException();
- T[][] matrica1=(T[][]) new Object[rows][columns-1];
- for(int i=0;i<rows;i++) {
- for(int j=0;j<col;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=0;i<rows;i++) {
- for(int j=col+1;j<columns;j++) {
- matrica1[i][j-1]=matrica[i][j];
- }
- }
- columns--;
- matrica=matrica1;
- }
- void resize(int newRows,int newCols) {
- T[][] matrica1=(T[][]) new Object[newRows][newCols];
- if(newRows>this.rows && newCols>this.columns) {
- for(int i=0;i<rows;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=rows;i<newRows;i++) {
- for(int j=columns;j<newCols;j++) {
- matrica1[i][j]=null;
- }
- }
- } else if(newRows<this.rows && newCols<this.columns){
- for(int i=0;i<newRows;i++) {
- for(int j=0;j<newCols;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- } else if(newRows>this.rows && newCols<this.columns) {
- for(int i=0;i<rows;i++) {
- for(int j=0;j<newCols;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=rows;i<newRows;i++) {
- for(int j=0;j<newCols;j++) {
- matrica1[i][j]=null;
- }
- }
- } else {
- for(int i=0;i<newRows;i++) {
- for(int j=0;j<columns;j++) {
- matrica1[i][j]=matrica[i][j];
- }
- }
- for(int i=0;i<newRows;i++) {
- for(int j=columns;j<newCols;j++) {
- matrica1[i][j]=null;
- }
- }
- }
- rows=newRows;
- columns=newCols;
- matrica=matrica1;
- }
- }
- public class MatrixTest {
- public static void main(String[] args) {
- Scanner jin = new Scanner(System.in);
- int t = jin.nextInt();
- if ( t == 0 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- print(matrix);
- }
- if ( t == 1 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.nextInt());
- }
- }
- print(matrix);
- }
- if ( t == 2 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<String> matrix = new Matrix<String>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.next());
- }
- }
- print(matrix);
- }
- if ( t == 3 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<String> matrix = new Matrix<String>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.next());
- }
- }
- print(matrix);
- matrix.deleteRow(jin.nextInt());
- matrix.deleteRow(jin.nextInt());
- print(matrix);
- int ir = jin.nextInt();
- matrix.insertRow(ir);
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(ir, k, jin.next());
- }
- ir = jin.nextInt();
- matrix.insertRow(ir);
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(ir, k, jin.next());
- }
- print(matrix);
- matrix.deleteColumn(jin.nextInt());
- matrix.deleteColumn(jin.nextInt());
- print(matrix);
- int ic = jin.nextInt();
- matrix.insertColumn(ir);
- for ( int i = 0 ; i < r ; ++i ) {
- matrix.setElementAt(i, ic, jin.next());
- }
- ic = jin.nextInt();
- matrix.insertColumn(ic);
- for ( int i = 0 ; i < r ; ++i ) {
- matrix.setElementAt(i, ic, jin.next());
- }
- print(matrix);
- }
- if ( t == 4 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.nextInt());
- }
- }
- print(matrix);
- int nr = jin.nextInt();
- int nc = jin.nextInt();
- matrix.resize(nr, nc);
- print(matrix);
- matrix.fill(jin.nextInt());
- print(matrix);
- }
- }
- public static void print ( Matrix<?> m ) {
- int r = m.getNumRows();int c = m.getNumColumns();
- System.out.println(" "+r+" x "+c);
- System.out.print(" ");
- for ( int k = 0 ; k < c ; ++k ) {
- System.out.print(k+" ");
- }
- System.out.println();
- System.out.print(" ");
- for ( int k = 0 ; k < c ; ++k ) {
- System.out.print("-----");
- }
- System.out.println();
- for ( int i = 0 ; i < r ; ++i ) {
- System.out.print(i+"|");
- for ( int k = 0 ; k < c ; ++k ) {
- if ( k > 0 ) System.out.print(" ");
- System.out.print(m.getElementAt(i, k));
- }
- System.out.println();
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement