This is C source code, written in gcc platform (Ubuntu, 14.04 LTS, Linux).
Here is the process for generating the Equivalent Binary Code of a decimal digit. First, a palindrome number is being generated. If we Push n elements in the stack, it generates a palindrome number of length (2^n) -1.
This is the special property. Then it can generate Binary code of maximum n bit. Note that, we have to Push elements sequentially in Decreasing order. e.g 4,3,2,1. It generates 121312141213121, so now it can generate Binary code of maximum 4 bit.
/* This is a Process of generating Palindrome number from some given numbers. This is a Process of generating binary code from some given numbers. It actually takes the help of palindrome generation.*/#include #define max 10#define maxim 300#define maxr 550#define maxc 9int pushA (int[], int*, int*);int cpyAC (int[], int[], int*);int palgen (int[], int[], int[], int*, int*);void display (int[], int*);void displayA (int[], int*);int binarycode (int A[maxr][maxc], int*, int*, int[], int*);void grycddisp (int A[maxr][maxc], int*, int*);//----------------------------------------------------int pushA (int a[max], int *top, int *item){ printf("
Enter element: "); scanf("%d", &(*item)); a[++(*top)] = (*item); printf("
Push is successful...
"); return (*top);}//----------------------------------------------------int cpyAC (int a[max], int c[max], int *top){ int i= -1, j= -1, toc; while (j c[++i] = a[++j]; toc= i; return (toc);}//----------------------------------------------------int palgen (int a[max], int b[maxim], int c[max], int *top, int *toc){ int i, j, k, tob, x; j= -1; i= (*top); k= (*toc); while (k -1) { b[++j] = c[k]; (*toc)--; k= (*toc); while (b[j] != a[i]) { i--; } while (i { c[++k] = a[++i]; (*toc)++; i+= 0; } (*toc)--; k = (*toc); k+= 0; } tob= j; return (tob); }//---------------------------------------------------int binarycode (int A[maxr][maxc], int *row, int *col, int b[maxim], int *tob){printf("
Row= %d, Col= %d
", *row, *col); //create co-ordinate int i=0, j, value, k; while (i { j=(*col); while (j 0 ) { j--; } i++; } //binarycode generation i= 0; j= (*col); while (j 0) { A[i][j] = 0; j--; } while (i { i++; j=(*col); while (j0) { A[i][j] = A[i-1][j]; j--; } k= (*tob); value = b[k]; (*tob)--; j= value; for(; j0; j--) { if (A[i][j] == 0) A[i][j] = 1; else A[i][j] = 0; } i+=0; }}//------------------------------------------------------------void grycddisp (int A[maxr][maxc], int *row, int *col){ int i= 0, j; while (i { j=(*col); while (j 0 ) { printf(" %d", A[i][j]); j--; } printf("
"); i++; }}//------------------------------------------------------------void displayA (int a[max], int *top){ int i; printf("
You entered...
"); i= (*top); while (i = 0) { printf("
%d", a[i--]); }}//---------------------------------------------------void display (int b[maxim], int *tob){ int i; printf("
The items of Stack are shown...{B}
"); i= (*tob); printf("
"); while (i = 0) { printf("%d", b[i--]); }}//----------------------------------------------------void main (void){ int a[max], b[maxim], c[max], item=0, top =(-1), toc, tob; int A[maxr][maxc], row =1, col =0, bit =0; char ch; system ("clear"); printf ("
This is a Process of generating binary Code of n-bit.
Please insert n numbers in decreasing order.
e.g 4,3,2,1 for 4-bit binary code.
"); if (top == -1) printf("
Initially Stack is empty...
"); printf("
You have to give data, please start insertion.
Press 'y' for insert, 'n' for exit.
"); ch= getchar(); while (ch == 'y') { top= pushA (a, &top, &item); printf("
'y' :insert
'n' :exit.
"); getchar(); ch= getchar(); getchar(); if( top == (max-1) ) { printf("
Sorry...
Stack is full.
Push operation is not possible...
"); break; } } system("clear"); displayA (a, &top); if(top == -1) printf("
Sorry...
Stack is empty...
Copy is done...
"); else toc= cpyAC (a, c, &top); tob= palgen (a, b, c, &top, &toc); if(tob == -1) printf("
Sorry...
Stack is empty...
"); else display (b, &tob);//------------------------------------------------------- printf("
Enter the bit number of binary code: "); scanf("%d", &bit); col= bit; while (bit 0) { row= (row*2); bit --; } binarycode (A, &row, &col, b, &tob); grycddisp (A, &row, &col); printf ("
T H A N K Y O U
"); }