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
7
int
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
}
MC
#define MC
Definition
028_Hamming.c:4
l2
#define l2
Definition
028_Hamming.c:5
main
int main(void)
Definition
Ejemplo_035.c:15
src
20251
028_Hamming.c
Generated by
1.16.1