Thursday, January 19, 2012

Array [XIV] 2-D Array Sorting




Sorting a 2-D array Row-wise


#include <stdio.h>
#include <conio.h>

//Sorting Columnwise

  void main()
      {
           int Arr[10][10],i,j,m,n,k,temp;
           printf("\n\tEnter Row Size [Below 10] : ");
           scanf("%d",&n);
           printf("\n\tEnter Column Size [Below 10] : ");
           scanf("%d",&m);
           printf("\n");
           for(i=0;i<n;i++)
              {
                   for(j=0;j<m;j++)
                        {
                            printf("\tElement at [%d,%d] : ",i,j);
                            scanf("%d",&Arr[i][j]);
                        }
              }
           printf("\n");
           printf("\n\tOriginal Array\n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           for(k=0;k<n;k++)
              {
                   for(i=0;i<m;i++)
                        {
                            for(j=0;j<m-i-1;j++)
                                {
                                      if(Arr[k][j]>Arr[k][j+1])
                                                {
                                                          temp=Arr[k][j];
                                                          Arr[k][j]=Arr[k][j+1];
                                                          Arr[k][j+1]=temp;
                                                }
                                }
                        }
              }

           printf("\n\tSorted Array\n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           getch();
      }


Sorting a 2-D array Column-wise


#include <stdio.h>
#include <conio.h>

//Sorting Rowwise

  void main()
      {
           int Arr[10][10],i,j,m,n,k,temp;
           clrscr();
           printf("\n\tEnter Row Size [Below 10] : ");
           scanf("%d",&n);
           printf("\n\tEnter Column Size [Below 10] : ");
           scanf("%d",&m);
           printf("\n");
           for(i=0;i<n;i++)
              {
                   for(j=0;j<m;j++)
                        {
                            printf("\tElement at [%d,%d] : ",i,j);
                            scanf("%d",&Arr[i][j]);
                        }
              }
           printf("\n");
           printf("\n\tOriginal Array\n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           for(k=0;k<m;k++)
              {
                   for(i=0;i<n;i++)
                        {
                            for(j=0;j<n-i-1;j++)
                                {
                                      if(Arr[j][k]>Arr[j+1][k])
                                                {
                                                          temp=Arr[j][k];
                                                          Arr[j][k]=Arr[j+1][k];
                                                          Arr[j+1][k]=temp;
                                                }
                                }
                        }
              }

           printf("\n\tSorted Array\n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           getch();
      }



Sorting a 2-D array


#include <stdio.h>
#include <conio.h>

//Overall Matrix Sorting
  void main()
      {
           int Arr[10][10],i,j,n=0,m=0,temp;
           clrscr();
           printf("\n\tEnter Nos. of Rows [Below 10] : ");
           scanf("%d",&n);
          printf("\n\tEnter Nos. of Cols [Below 10] : ");
           scanf("%d",&m);
           for(i=0;i<n;i++)
              {
                   for(j=0;j<m;j++)
                        {
                            printf("\n\tEnter Element at [%d,%d] : ",i,j);
                            scanf("%d",&Arr[i][j]);
                        }
              }
           printf("\n\tOriginal Array \n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           for(i=0;i<(n*m)-1;i++)
              {
                   for(j=0;j<(n*m)-1;j++)
                        {
                            if(Arr[j/m][j%m]>Arr[(j+1)/m][(j+1)%m])
                                {
                                      temp=Arr[j/m][j%m];
                                      Arr[j/m][j%m]=Arr[(j+1)/m][(j+1)%m];
                                      Arr[(j+1)/m][(j+1)%m]=temp;
                                }
                        }
              }
           printf("\n\tAfter Sorting\n");
           for(i=0;i<n;i++)
              {
                   printf("\t");
                   for(j=0;j<m;j++)
                        {
                            printf("%3d",Arr[i][j]);
                        }
                   printf("\n");
              }
           getch();
      }


Thursday, January 12, 2012

Array [XIII] 2-D Array


Multi dimensional Arrays:
Where Single Dimensional Arrays has one column and multiple rows, multi-dimensional arrays has multiple rows as well as multiple columns. Multi-dimensional data structure also known as matrices. A multi-dimensional array with 3 rows and 3 columns is shown. There are two array subscripts. One subscript denotes the row & the other the column.
N[0][0]
N[0][1]
N[0][2]
N[1][0]
N[1][1]
N[1][2]
N[2][0]
N[2][1]
N[2][2]


Input a 3/3 Matrix, Print the sum of rows, Columns, Left Diagonal and Right Diagonal.



#include <stdio.h>
#include <conio.h>

/*Input a 3/3 Matrix, Print the sum of rows, Columns, Left Diagonal and Rigth Diagonal*/

  void main()
      {
           int ar[3][3];
           int i,j,c,sr=0,sc=0,sld=0,srd=0;
           clrscr();
           for(i=0;i<3;i=i+1)
              {
                   for(j=0;j<3;j=j+1)
                        {
                            printf("\n\tEnter Element for [%d][%d] : ",i,j);
                            scanf("%d",&ar[i][j]);
                        }
              }
           //sum of row, column, left diagonal, right diagonal
           printf("\n\n");
           for(i=0;i<3;i=i+1)
              {
                   sr=sc=0;
                   for(j=0;j<3;j=j+1)
                        {
                            printf("%3d",ar[i][j]);
                            sr=sr+ar[i][j]; //row sum;
                            sc=sc+ar[j][i]; //column sum
                            if(i==j)
                                {
                                      sld=sld+ar[i][j];//left diagonal
                                }
                            if(i+j==2) // 2 means n-1 right diagonal
                                {
                                      srd=srd+ar[i][j];
                                }
                        }
                   printf("\tSum of row  %d   Sum of column  %d\n",sr,sc);
              }
           printf("\n\n\tSum of left diagonal  %d   Sum of right diagonal  %d\n ",sld,srd);
           getch();
      }

Input a 3/3 Matrix, and Transpose it.

#include <stdio.h>
#include <conio.h>

//Input a 3/3 Matrix, and Transpose it

  void main()
      {
           int ar[3][3];
           int i,j,c;
           clrscr();
           for(i=0;i<3;i=i+1)
              {
                   for(j=0;j<3;j=j+1)
                        {
                            printf("\n\tEnter Element for [%d][%d] : ",i,j);
                            scanf("%d",&ar[i][j]);
                        }
              }
           printf("\nOriginal Array \n");
           for(i=0;i<3;i=i+1)
              {
                   for(j=0;j<3;j=j+1)
                        {
                            printf("%3d",ar[i][j]);
                        }
                   printf("\n");
              }
           //transpose in same array
           printf("\nAfter Transpose\n");
           for(i=0;i<3;i=i+1)
              {
                   for(j=0;j<i;j=j+1)
                        {
                            c=ar[i][j];
                            ar[i][j]=ar[j][i];
                            ar[j][i]=c;
                        }
              }
           for(i=0;i<3;i=i+1)
              {
                   for(j=0;j<3;j=j+1)
                        {
                            printf("%3d",ar[i][j]);
                        }
                   printf("\n");
              }
           getch();
      }


Thursday, January 5, 2012

Array [XII] Double-Ended Queue.


 

A double-ended queue  (dequeue, often abbreviated to deque, pronounced deck) is an abstract data type that implements a queue for which elements can only be added to or removed from the front or the rear.
·           An input-restricted deque is one where deletion can be made from both ends, but insertion can only be made at one end.
·           An output-restricted deque is one where insertion can be made at both ends, but deletion can be made from one end only.
Both the basic and most common list types in computing, queues and stacks can be considered specializations of deques, and can be implemented using deques.

Source Code


#include <stdio.h>
#include <conio.h>
int dq[10];
int front = -1;
int rear = -1;

  void Push_Right()
      {
           if((front == 0 && rear == 9) || (front == rear+1))
              {
                   printf("\n\tQueue Full\n");
                   return;
              }
           if (front == -1)
              {
                   front = 0;
                   rear = 0;
              }
           else   if(rear == 9)
              {
                   rear = 0;
              }
           else
              {
                   rear = rear+1;
              }
          printf("\n\tInput An Element : ");
           scanf("%d", &dq[rear]);
      }

  void Push_Left()
      {
           if((front == 0 && rear == 9) || (front == rear+1))
              {
                   printf("\n\tQueue is Full \n");
                   return;
              }
           if (front == -1)
              {
                   front = 0;
                   rear = 0;
              }
           else if(front== 0)
              {
                   front=9;
              }
           else
              {
                   front=front-1;
              }
           printf("\n\tInput an Eelement : ");
           scanf("%d", &dq[front]);
      }

  void Pop_Left()
      {
           if (front == -1)
              {
                   printf("\n\tQueue Empty!\n");
                   return ;
              }
           printf("\n\tElement Removed from Queue = : %d\n",dq[front]);
           if(front == rear)
              {
                   front = -1;
                   rear=-1;
              }
           else if(front ==9)
              {
                   front = 0;
              }
           else
              {
                   front = front+1;
              }
      }
  void Pop_Right()
      {
           if (front == -1)
              {
                   printf("\n\tQueue is Empty!\n");
                   return ;
              }
           printf("\n\tElement Removed  : %d\n",dq[rear]);
           if(front == rear)
              {
                   front = -1;
                   rear=-1;
              }
           else if(rear == 0)
              {
                   rear=9;
              }
           else
              {
                   rear=rear-1;
              }
      }

  void Disp()
      {
           int fp = front,rp = rear;
           if(front == -1)
              {
                   printf("\n\tQueue is Empty!\n");
                   return;
              }
           printf("\n\tQueue elements : \t ");
           if( fp <= rp )
              {
                   while(fp <= rp)
                        {
                            printf("%d ",dq[fp]);
                            fp++;
                        }
              }
           else
              {
                   while(fp <= 9)
                        {
                            printf("%d ",dq[fp]);
                            fp++;
                        }
                   fp = 0;
                   while(fp <= rp)
                        {
                            printf("%d ",dq[fp]);
                            fp++;
                        }
              }
           printf("\n");
           getch();
   }


  void Input_Menu()
      {
           int ch=0;
           clrscr();
           while(ch<5)
              {
                   printf("\n\t * Input Restricted Menu *\n");
                   printf("\n\t1. Insert at Rear");
                   printf("\n\t2. Delete from front");
                   printf("\n\t3. Delete from rear");
                   printf("\n\t4. Display");
                   printf("\n\t5. Quit");
                   printf("\n\tEnter your choice : ");
                   scanf("%d",&ch);
                   switch(ch)
                        {
                            case 1:Push_Right();break;
                            case 2:Pop_Left();break;
                            case 3:Pop_Right();break;
                            case 4:Disp();break;
                        }
              }
       }

  void Output_Menu()
      {
           int ch=0;
           clrscr();
           while(ch<5)
              {
                   printf("\n\t * Output Restricted Menu *\n");
                   printf("\n\t1. Push at Rear");
                   printf("\n\t2. Push at Front");
                   printf("\n\t3. Pop from Front");
                   printf("\n\t4. Display");
                   printf("\n\t5. Quit");
                   printf("\n\tEnter A choice : ");
                   scanf("%d",&ch);
                   switch(ch)
                        {
                            case 1: Push_Right();break;
                            case 2: Push_Left();break;
                            case 3: Pop_Left();break;
                            case 4: Disp();break;
                        }
              }
      }



  void main()
      {
           int ch;
           clrscr();
           while(ch!=3)
              {
                   printf("\n\t * Main Menu *\n");
                   printf("\n\t1. Input Restricted");
                   printf("\n\t2. Output Restricted");
                   printf("\n\t3. Exit");
                   printf("\n\tEnter A choice : ");
                   scanf("%d",&ch);
                   switch(ch)
                        {
                            case 1:Input_Menu();break;
                            case 2:Output_Menu();break;
                            case 3:printf("\n\t..Quit...");getch();exit(0);
                            default: printf("Wrong choice\n");
                        }
              }
      }