ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
028_Hamming.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <math.h>
3
4#define MC 2048
5#define l2 log(2)
6
7int main(int argc, char *argv[])
8{
9 char str[MC], strP[MC];
10 int i, j, k, nc, nP;
11 i=0;
12 do{
13 str[i++] = getc(stdin);
14 }while(str[i-1]!=10);
15 str[i-1] = '\0';
16 nc = i-1;
17 nP = log(nc+log(nc)/l2+1)/l2+1;
18 printf("%s(%d, %d)\n", str, nc, nP);
19 for(i=0, j=1, k=0; i<nc+nP; i++)
20 {
21 if((i+1)!=j)
22 strP[i] = str[k++];
23 else
24 {
25 strP[i] = 0;
26 j<<=1;
27 }
28 }
29 for(i=0, j=1; i<nP; i++)
30 {
31 for(k=j; k<=(nc+nP); k++)
32 if(((k-j)%(2*j))<j)
33 strP[j-1]^=strP[k-1];
34// printf("%d\t", ((k-j)%(2*j))<j);
35// printf("\n");
36 j<<=1;
37 }
38 strP[nc+nP] = '\0';
39 for(i=0; i<nc+nP; i++)
40 printf("%d\n", strP[i]);
41 printf("%s\n", strP);
42 return 0;
43}
#define MC
Definition 028_Hamming.c:4
#define l2
Definition 028_Hamming.c:5
int main(void)
Definition Ejemplo_035.c:15