#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
//---------------------------------------------------------------------------
int ToDec(int [5][8],int col,int len);
void code(void);
void decode(void);
void margin(void);
char menu(void);
int main()
{
char choose_main;
textmode(C80);
for(;;){
textbackground(8);
_setcursortype(_NOCURSOR);
choose_main=menu();
switch(choose_main){
case 'c':
case 'C':
code();
break;
case 'd':
case 'D':
decode();
break;
case 'e':
case 'E':
exit (0);
}
}
}
void margin(void){
int i;
clrscr();
textmode(C80);
textcolor(7);
highvideo();
cprintf("\xB2");
for(i=1;i<25;i++){
gotoxy(1,i);
cprintf("\xB2\xB2");
gotoxy(79,i);
cprintf("\xB2\xB2");
}
gotoxy(1,1);
insline();
for(i=0;i<80;i++)cprintf("\xB2");
gotoxy(1,25);
for(i=0;i<79;i++)cprintf("\xB2");
}
char menu(void){
char choose;
textmode(C80);
clrscr();
margin();
gotoxy(12,6);
textcolor(2);
highvideo();
cprintf("MAIN MENU");
gotoxy(9,7);
cprintf("...............");
gotoxy(9,9);
textcolor(2);
highvideo();
cprintf("Code");
gotoxy(9,9);
textcolor(3);
highvideo();
cprintf("C");
gotoxy(9,10);
textcolor(2);
highvideo();
cprintf("Decode");
gotoxy(9,10);
textcolor(3);
highvideo();
cprintf("D");
textcolor(2);
gotoxy(9,11);
highvideo();
cprintf("Exit");
gotoxy(9,11);
textcolor(3);
highvideo();
cprintf("E");
while(1){
choose=getch();
if(choose=='c'||choose=='C'||choose=='D'||choose== 'd'||choose=='e'||choose=='E')
break;
}
return choose;
}
void code(){
int i=0,idx=0,jdx=0,de=0,lens=0,lop=0,decs[8][8]={0},codes[8][8]={0};
char s[8]={0},max=0,min=0;
clrscr();
textmode(C80);
margin();
_setcursortype(_NORMALCURSOR);
gotoxy(6,5);
printf("Enter a string:");
gets(s);
lens=strlen(s);
strupr(s);
min=max=s[0];
for(idx=0;idx<lens;idx++)
{
if(s[idx]<min)
min=s[idx];
if(s[idx]>max)
max=s[idx];
}
//printf("max=%c,min=%c",max,min);
de=((max-min)+1);
//printf(" (max-min)+1=%d",de);
for(lop=0;lop<=5;lop++){
i=pow(2,lop);
if(pow(2,lop)>de)
break;
}
//printf(" differ=%d\n",lop);
int iDec=0;
for(idx=0;idx<lens;idx++)
{
iDec=int(s[idx])-int(min);
for(jdx=(lop-1);jdx>=0;jdx--,iDec>>=1)
decs[idx][jdx]=iDec%2;
}
for (idx=0; idx<lens; idx++)
for (jdx=0; jdx<lop; jdx++)
codes[jdx][idx]=decs[idx][jdx];
//printf("\n\nHorizontals[");
/*for (idx=0; idx<lens; idx++)
{
for (jdx=0; jdx<lop; jdx++)
printf("%d", (decs[idx][jdx]));
if(idx!=lens-1) printf(",");
} */
//printf("]");
//printf("\nVerticals[");
//for (idx=(lop-1); idx>=0; idx--) // code meisam
/*for (idx=0;idx<lop;idx++) // code MH
{
for (jdx=0; jdx<lens; jdx++)
printf("%d",codes[idx][jdx]);
if(idx!=lop-1)
printf(",");
}
printf("]\n");*/
gotoxy(6,7);
printf("Coded String : ");
for (idx=0/*(lop-1)*/;idx<lop/*>=0*/;idx++)
{
// printf("\n%c",ToDec(codes,idx,lens)+32);// code meisam
//code MH
//int b=0,i;
int b=0;
for(i=(lens-1);i>=0;i--){
b+=codes[idx][i]*pow(2,(lens-1)-i);
}
gotoxy(21+idx,7);
printf("%c",b+33);
}
getch();
}
void decode(){
int i=0,idx=0,jdx=0,lens=0,lop=0,decs[8][8]={0},codes[8][8]={0};
char s[8]={0},min=0;
clrscr();
textmode(C80);
margin();
_setcursortype(_NORMALCURSOR);
gotoxy(6,5);
printf("Enter the coded String: ");
gotoxy(30,5);
gets(s);
gotoxy(6,7);
printf("Enter the Minimum character of Main String: ");
gotoxy(50,7);
min = getchar();
gotoxy(6,9);
printf("Enter the length of the Main String: ");
gotoxy(43,9);
scanf("%d",&lop);
lens=strlen(s);
int iDec=0;
//*************
//baraye taEn kardane meghdar lop
//*************
for(idx=0;idx<8;idx++)
for(jdx=0;jdx<8;jdx++)
decs[idx][jdx]=0;
for(idx=0;idx<lens;idx++)
{
iDec=int(s[idx])-33;
for(jdx=lop-1;jdx>=0;jdx--,iDec>>=1){
decs[idx][jdx]=iDec%2;
}
}
for (idx=0; idx<lens; idx++)
for (jdx=0; jdx<lop; jdx++)
codes[jdx][idx]=decs[idx][jdx];
gotoxy(6,13);
printf("The main String is : ");
for (idx=0/*(lop-1)*/;idx<lop/*>=0*/;idx++)
{
// printf("\n%c",ToDec(codes,idx,lens)+32);// code meisam
//code MH
//int b=0,i;
int b=0;
for(i=(lens-1);i>=0;i--){
b+=codes[idx][i]*pow(2,(lens-1)-i);
}
gotoxy(29+idx,13);
printf("%c",b+min);
}
getch();
}