C/Visual C - Codigo Hamming en C++

 
Vista:
sin imagen de perfil

Codigo Hamming en C++

Publicado por Oscar (1 intervención) el 26/04/2014 02:54:57
Hola queria saber si alguien me puede ayudar o decir como se puede codificar y descodificar un mensaje utilizando el codigo hamming en c++
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Codigo Hamming en C++

Publicado por alfredO (3 intervenciones) el 26/04/2014 04:20:23
Para sistemas Unix, aunque fácilmente adaptable a Windows, etc. Es C, si lo quieres en C++, modifícalo a tus necesidades.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <stdio.h>
#include <math.h>
 
int main()
{
	int a[20], b[20], c[20], d[20], i, k, m, f, n, j, r, p, x, y, z, ch,
	    key, q, v, sum = 0;
	system("clear");
	printf("\n Ingresa la longitud de la palabra de datos :");
	scanf("%d", &k);
	printf("\n Ingresa la palabra de datos: \n");
	for (i = 1; i <= k; i++) {
		scanf("%d", &a[i]);
	}
	m = 1;
	while ((k + m + 1) >= pow(2, m)) {
		m++;
	}
	printf("\n El valor de  m es : %d", m);
	n = k + m;
	j = 1;
	r = 0;
	for (i = 1; i <= n; i++) {
		p = pow(2, r);
		if (i == p) {
			b[i] = 0;
			r++;
		} else {
			b[i] = a[j];
			j++;
		}
	}
	printf("\n Palabra código intermedia es: \n");
	for (i = 1; i <= n; i++)
		printf("%d", b[i]);
	p = 0;
	for (i = 1; i <= m; i++) {
		x = pow(2, p);
		r = 1;
		for (j = x; j <= n; j = j + (x * 2)) {
			for (y = j; y < (j + x); y++) {
				c[r] = b[y];
				r++;
			}
		}
		z = 0;
		for (y = 1; y <= (r - 1); y++) {
			if (c[y] == 1)
				z++;
		}
		if (z % 2 == 0)
			b[x] = 0;
		else
			b[x] = 1;
		for (y = 1; y <= 20; y++)
			c[y] = 0;
		p++;
	}
	printf("\n\n El código hamming es: \n");
	for (i = 1; i <= n; i++)
		printf("%d", b[i]);
	while (1) {
		printf
		    ("\n\n Presiona 1 para cambiar un bit o 0 para salir \n\n");
		scanf("%d", &ch);
		if (ch == 1) {
			printf("\n Ingresa el bit que quieras cambiar: \n");
			scanf("%d", &key);
			for (i = 1; i <= n; i++) {
				if (i == key) {
					if (b[key] == 1)
						b[key] = 0;
					else
						b[key] = 1;
					break;
				}
			}
			printf("\n El nuevo código es: \n\n");
			for (i = 1; i <= n; i++)
				printf("%d", b[i]);
		} else
			break;
	}
	p = 0;
	q = 0;
	for (i = 1; i <= m; i++) {
		x = pow(2, p);
		r = 1;
		for (j = x; j <= n; j = j + (x * 2)) {
			for (y = j; y < (j + x); y++) {
				c[r] = b[y];
				r++;
			}
		}
		z = 0;
		for (y = 1; y <= (r - 1); y++) {
			if (c[y] == 1)
				z++;
		}
		v = z % 2;
		d[q] = v;
		sum = sum + (v * pow(2, q));
		q++;
		for (y = 1; y <= 20; y++)
			c[y] = 0;
		p++;
	}
	if (sum == 0)
		printf("\n\n Ningún error encontrado....... \n\n");
	else
		printf("\n\n Error en la posición %d", sum);
	printf("\n");
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Hamming en C++

Publicado por Chema (234 intervenciones) el 26/04/2014 12:40:08
el código Hamming no codificar ni descodifica mensajes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Hamming en C++

Publicado por Marshall (1 intervención) el 23/03/2015 20:30:34
buenas

una duda muy grande que tengo....

¿que tendria que pedirle que me muestre al programa para que me refleje la tabla de calculo de paridad?

Para ambas tablas tanto como para el emisor como para el receptor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Hamming en C++

Publicado por UnoPorAhi (15 intervenciones) el 26/04/2014 13:35:38
Buenas,

Realizando una sencilla búsqueda en Google encontrarás millones de implementaciones differentes, como la del ejemplo que te han puesto: http://youthtalentauzzar.blogspot.fr/2012/05/computer-network-hamming-code-program.html#.U1uXlB-7xCU

Y si buscas algo más, verás también implementaciones en C++: http://www.cprogramdevelop.com/4616706/

Aunque lo mejor sería que lo estudies bien (por lo que ya te ha apuntado ya Chema, parece que no entiendes para que sirve en realidad) y te hagas tú tu propia implementación: http://es.wikipedia.org/wiki/C%C3%B3digo_Hamming


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar