Wednesday 29 November 2017

Java Program to implement Bit Matrix


Code:

import java.util.Scanner;
import java.util.BitSet;

/** class bit Matrix */
class BitMatrix
{
    private BitSet[] bitArr;

    /** constructor **/
    public BitMatrix(int rows, int cols)
    {
        bitArr = new BitSet[rows];
        for (int i = 0; i < rows; i++)
            bitArr[i] = new BitSet(cols);
    } 
    /** function to clear **/
    public void clear()
    {
        int rows = bitArr.length;
        int cols = bitArr[0].size();
        bitArr = new BitSet[rows];
        for (int i = 0; i < rows; i++)
            bitArr[i] = new BitSet(cols);       
    }
    /** function to clear a particular row **/
    public void clear(int r)
    {
        bitArr[r].clear();
    }
    /** function to clear a particular bit **/
    public void clear(int r, int c)
    {
        bitArr[r].clear(c);
    }    
    /** function to get a particular bit **/
    public boolean get(int r, int c)
    {
        return bitArr[r].get(c);
    }    
    /** function to set a particular bit **/
    public void set(int r, int c)
    {
        bitArr[r].set(c);
    }
    /** function to OR two rows **/
    public void or(int r1, int r2)
    {
        bitArr[r1].or(bitArr[r2]);
    }    
    /** function to And two rows **/
    public void and(int r1, int r2)
    {
        bitArr[r1].and(bitArr[r2]);
    }    
    /** function to XOR two rows **/
    public void xor(int r1, int r2)
    {
        bitArr[r1].xor(bitArr[r2]);
    }       
    /** function to display bitset */
    public void display()
    {
        System.out.println("\nBit Matrix : ");
        for (BitSet bs : bitArr)
               System.out.println(bs);
        System.out.println();
    }    
}

/** BitMatrixTest **/
public class BitMatrixTest
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Bit Matrix Test\n");   

        System.out.println("Enter row and column dimensions");
        BitMatrix bm = new BitMatrix(scan.nextInt(), scan.nextInt() );

        char ch;
        /*  Perform Bit Matrix operations */
        do    
        {
            System.out.println("\nBit Matrix Operations\n");
            System.out.println("1. or ");
            System.out.println("2. and");
            System.out.println("3. xor");
            System.out.println("4. clear");
            System.out.println("5. set");
            System.out.println("6. get");            

            int choice = scan.nextInt();            
            switch (choice) 
            {
            case 1 : 
                System.out.println("Enter row1 and row2 to OR");
                bm.or(scan.nextInt(), scan.nextInt() );                     
                break;                          
            case 2 : 
                System.out.println("Enter row1 and row2 to AND");
                bm.and(scan.nextInt(), scan.nextInt() );      
                break;                                          
            case 3 : 
                System.out.println("Enter row1 and row2 to XOR");
                bm.xor(scan.nextInt(), scan.nextInt() );      
                break;
            case 4 : 
                System.out.println("\nBit matrix Cleared");
                bm.clear();
                break;    
            case 5 : 
                System.out.println("Enter row and column to set bit");
                bm.set(scan.nextInt(), scan.nextInt() );
                break;         
            case 6 : 
                System.out.println("Enter row and column to get bit status");
                System.out.println("\nStatus : "+ bm.get(scan.nextInt(), scan.nextInt()));
                break;
            default : 
                System.out.println("Wrong Entry \n ");
                break;   
            }    
            bm.display();

            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);                        
        } while (ch == 'Y'|| ch == 'y');         
    }
}


Output:

Bit Matrix Test

Enter row and column dimensions
4 4

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
0 24

Bit Matrix :
{24}
{}
{}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
0 6

Bit Matrix :
{6, 24}
{}
{}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
1 28

Bit Matrix :
{6, 24}
{28}
{}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
5
Enter row and column to set bit
1 5

Bit Matrix :
{6, 24}
{5, 28}
{}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
1
Enter row1 and row2 to OR
2 0

Bit Matrix :
{6, 24}
{5, 28}
{6, 24}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
2
Enter row1 and row2 to AND
0 3

Bit Matrix :
{}
{5, 28}
{6, 24}
{}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
3
Enter row1 and row2 to XOR
3 2

Bit Matrix :
{}
{5, 28}
{6, 24}
{6, 24}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
3
Enter row1 and row2 to XOR
3 1

Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
6
Enter row and column to get bit status
0 3

Status : false

Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
6
Enter row and column to get bit status
1 28

Status : true

Bit Matrix :
{}
{5, 28}
{6, 24}
{5, 6, 24, 28}


Do you want to continue (Type y or n)

y

Bit Matrix Operations

1. or
2. and
3. xor
4. clear
5. set
6. get
4

Bit matrix Cleared

Bit Matrix :
{}
{}
{}
{}


Do you want to continue (Type y or n)

n



More Java Programs:

















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...