ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
028_Hamming.c File Reference
#include <stdio.h>
#include <math.h>
Include dependency graph for 028_Hamming.c:

Go to the source code of this file.

Macros

#define MC   2048
#define l2   log(2)

Functions

int main (int argc, char *argv[])

Macro Definition Documentation

◆ l2

#define l2   log(2)

Definition at line 5 of file 028_Hamming.c.

◆ MC

#define MC   2048

Definition at line 4 of file 028_Hamming.c.

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 7 of file 028_Hamming.c.

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