EP4

EP4

por Vinícius Bitencourt Matos -
Número de respostas: 7

Olá, Carlinhos!

Gostaria de tirar algumas dúvidas a respeito do EP4.

  1. É permitido o uso de bibliotecas adicionais, como string.h, math.h e unistd.h?
  2. Podemos utilizar deslocamento e operadores lógicos com bits?
  3. 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.
  4. 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?]
  5. 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!

Em resposta à Vinícius Bitencourt Matos

Re: EP4

por Vinícius Bitencourt Matos -

Obs.: no item 3, minha ideia é fazer isto quando a diferença for negativa: multiplicar por –1, tomar o resto módulo 2b e subtrair este valor de 2b, evitando cálculos adicionais quando a diferença já for positiva.

Em resposta à Vinícius Bitencourt Matos

Re: EP4

por Carlos E. Ferreira -

1. Você pode usar as bibliotecas que desejar, apesar que eu não ache que isso simplifica.

2. Sim.

3. Você deve seguir o padrão que foi estabelecido no EP para que a correção pelos monitores fique mais simples.

4. Sim.

5. A função devolve k, o número de letras que foram codificadas... Por que restringir com \0?

Em resposta à Carlos E. Ferreira

Re: EP4

por Vinícius Bitencourt Matos -

5. Na decodificação, a cada 8/b bits percorridos, obtém-se um caractere do texto original. Se o texto acabar antes, os bits subsequentes ao "último bit correspondente ao último caractere" vão ser idênticos aos do desenho original.

Quando nenhum dos 8/b bits que codificam um caractere tiver sofrido alteração, isso significa que o caractere tem representação 0 na tabela, ou seja, o '\0'.

Se eu puder considerar que o texto não tem um caractere nulo, em nenhuma posição, a decodificação poderia parar ao encontrar o primeiro caractere 0, evitando percorrer o texto inteiro. Caso contrário, mesmo encontrando caracteres nulos, seria necessário verificar até a última posição possível , que é ( [m/d]d - 1, [n/d]d - 1 ).

Em resposta à Vinícius Bitencourt Matos

Re: EP4

por Carlos E. Ferreira -

Sim, é preciso verificar até a última posição possível.