Exemplo n.º 1
0
/**
 * Función para modificar los bits de un arreglo de caracteres de acuerdo a los parámetros recibidos
 * @param salida Es un arreglo de caracteres al cual se le van a modificar los bits
 * @param salidaLength El tamaño en bits del arreglo
 * @param pointer La posición a partir de la cual se comenzar a modificar los
 * @param c El caracter a codificar
 * @param frecuencias El arreglo de las frecuencias
 * @param length El tamaño del arreglo de frecuencias
 */
int Codificacion::escribeBits(char * salida, int salidaLength, long pointer, char c, Frecuencia * frecuencias, int length){
	int bitsescritos = 0;
	int indiceFrecuencia = buscaFrecuencia(frecuencias, 0, length, c);
	Frecuencia f = frecuencias[indiceFrecuencia];
	Bit * bits = new Bit();
	if (indiceFrecuencia >= 0){
		for (bitsescritos = 0; f.codigo[bitsescritos] != '\0'; bitsescritos++)
		{
			if (f.codigo[bitsescritos] == '1')
			{
				bits->pon1(salida, pointer + bitsescritos);
			}
			else if (f.codigo[bitsescritos] == '0')
			{
				bits->pon0(salida, pointer + bitsescritos);
			}
		}
	}
	return bitsescritos;
}