Olá, Carlinhos!
Gostaria de tirar algumas dúvidas a respeito do EP4.
- É permitido o uso de bibliotecas adicionais, como string.h, math.h e unistd.h?
- Podemos utilizar deslocamento e operadores lógicos com bits?
- Na equação (7) da página 3, matematicamente a parcela 256 parece ser desnecessária, uma vez que, como b ≤ 8, 256 é múltiplo de 2b. Então, o 256 é somado apenas para corrigir caso a diferença D'i j – Di j seja negativa, já que o operador % não funciona corretamente com valores negativos, e, sendo 256 = 28, serve para qualquer valor de b ≤ 8, certo? Exemplo: ocultando o número 0000 11002 = 12 em uma cor 0000 10012 = 9 com b = 4, a cor resultante é 0000 01012 = 5, e a diferença D' - D nesse ponto é 5 – 9 = –4; para decodificar, (–4) mod 24 é igual a 12. Gostaria de saber se este raciocínio está correto e, caso esteja, se posso apenas multiplicar por –1 quando for negativo em vez de somar 256.
- No modo verborrágico, a impressão extra deve ser igual para a codificação e a decodificação? No exemplo anterior, se o ponto for na posição linha = 0 e coluna = 4, então a impressão deve ser "0 4 12 09 05", certo? [Acrescentando: essa impressão deve ser feita também ao (de)codificar o valor de b?]
- O texto diz que podemos considerar que o texto não termina com '\0'; mas, desta forma, na decodificação, é necessário percorrer a matriz até a última posição permitida (linha [m/d]d – 1 e coluna [n/d]d – 1, em que [ ] representa a função piso), mesmo que o texto termine antes. Podemos considerar também que nenhum caractere do texto é nulo, parando a decodificação após ser encontrado o primeiro '\0'?
Obrigado!