COS DH3K3EG4WGJFDVJ7KY3Y7XTEUEARGW7V3SRSZ4A


#include
#include
#include
#include

const int H=4,S=10,Y=6;
int h[4],s[10],s1[10],so[10],y[6],z[10];

/*maciez generujaca*/
const int G[4][10]={
{1,0,0,0,1,1,0,0,0,1},
{0,1,0,0,1,0,1,0,0,1},
{0,0,1,0,1,0,0,1,0,1},
{0,0,0,1,1,0,0,0,1,1}};

/*maciez kontrolna transponowana*/
const int HT[10][6]={
{1,1,0,0,0,1},
{1,0,1,0,0,1},
{1,0,0,1,0,1},
{1,0,0,0,1,1},
{1,0,0,0,0,0},
{0,1,0,0,0,0},
{0,0,1,0,0,0},
{0,0,0,1,0,0},
{0,0,0,0,1,0},
{0,0,0,0,0,1}};

char menu(void)
{
char z;
clrscr();
printf("\n\tDekoder dla kodu (%2d,%2d)\n\tEnter koder\
\n\tEsc koniec",S,H);
z=getche();
return(z);
}

void zeruj(int *string,int lenght)
{
int i;
for(i=0;i string[i]=0; /* ciagu */
}

/*pobieranie ciagu z klawiatury z echem na ekranie w okr. pozycji*/

void pobierz(int lenght,int *string,int posx,int posy)
{
int i;
for(i=0;i {
fflush(stdin);
string[i]=getch()-'0';
if((string[i]==1)||(string[i]==0))
{
gotoxy(posx+i,posy);
printf("%d",string[i]);
i++;
}
}
}

/* wypisywanie ciagu na ekranie w okr. pozycji*/

void wypisz(int *string,int lenght,int x,int y)
{
int i;
for(i=0;i {
gotoxy(x+i,y);
printf("%d",string[i]);
}
}

void koder(void) /*kodowanie ciagu informacyjnego h -> s */
{
int i,j;
clrscr();
printf("\n podaj ciag informacyjny %2d znakow ",H);
gotoxy(10,4);
printf("ciag informacyjny");
pobierz(H,h,10,5);
zeruj(s,S);
for(j=0;j {
for(i=0;i {
s[j]+=h[i]*G[i][j];
}
s[j]%=2;
}
gotoxy(10,6);
printf("ciag kodowy");
wypisz(s,S,10,7);
gotoxy(10,8);
printf("podaj maciez bledu %2d znakow",S);
zeruj(z,S);
pobierz(S,z,10,9);
for(i=0;i s1[i]=(s[i]+z[i])%2;
gotoxy(10,10);
printf("ciag odebrany");
wypisz(s1,S,10,11);
}

int test(void) /*waga syndromu */
{
int i,wynik=0;
for(i=0;i<6;i++)
{
wynik+=y[i];
}
return(wynik);
}

void przes_l(void)
{
int j,pom;
pom=so[0];
for(j=0;j {
so[j]=so[j+1];
}
so[S-1]=pom;
}

void przes_p(void)
{
int j,pom;
pom=s1[9];
for(j=9;j>0;j--)
{
s1[j]=s1[j-1];
}
s1[0]=pom;
}

void dekoder(void) /* dekoduje ciag kodowy*/
{
int i,j,x,k=0,e=0,d=0;
gotoxy(10,12);
zeruj(so,S);
do
{
zeruj(y,Y);
for(j=0;j<6;j++)
{
for(i=0;i<10;i++)
{
y[j]+=s1[i]*HT[i][j];
}
y[j]%=2;
}
x=test();

switch(x) /* 1 */
{
case 0:
{
for(i=0;i<10;i++)
{
so[i]=s1[i];
so[i]%=2;
}
break;
}
case 1:
{
for(i=0;i<10;i++)
{
if(i<4)
so[i]=s1[i];
else
so[i]=s1[i]+y[i-4];
so[i]%=2;
}
break;
}
default:
{
zeruj(y,Y);
przes_p();
e++;
break;
}
}

}
while((x!=1)&&(x!=0)&&(e<11));
if((e!=0)&&(e<10))
{
for(i=0;i {
przes_l();
}
printf("ciag odebrany skorygowany");
}
if(e==0)
{
printf("ciag odebrany skorygowany");
}
if(e==11)
{
for(i=0;i<10;i++)
{
d+=z[i];
}
printf("zdolnoŚą korekcyjna przekroczona,wykryto bˆ©dów %d\n",d);
printf("\t ciÄ„g bˆ©dnie skorygowany");
for(i=0;i<10;i++)
{
if(i<4)
so[i]=s1[i];
else
so[i]=s1[i]+y[i-4];
so[i]%=2;
}
}
wypisz(so,S,10,14+k);

getch();
}

void main(void)
{
char z;
do
{
switch(z=menu())
{
case 13:{koder();dekoder();}break;
case 27:break;
default: break;
}
}
while(z!=27);
}


Wyszukiwarka

Podobne podstrony:
Coś między nami
cos
arm cos ?2?
Karpowicz Wyczaruj coÅ› z ziemniaka
cos
arm sin cos q31?
0211 Robert Sheckley CoÅ› za nic
CoÅ› na zÄ…b
COs WNET talkback
cos
cos handbook section nine security
arm sin cos ?2?
cos handbook section seven suggested grotto activities
group cos
cos z wykladu
34 Coś się nie udało
00000201 Feliński Boże coś Polskę

więcej podobnych podstron