João Araujo
Dr. en Informatique, Université de Versailles, França.

Primeira Prova de Laboratório de Programação 2005/1

Departamento de Sistemas e Computação

Professor: João Araujo

Questão Única

Você é um agente secreto e quer enviar uma mensagem criptografada para seu chefe, para isso você resolve usar um método bem simples de criptografia baseado em um algorimo usado pelo imperador Júlio César: Cada letra da sua mensagem será modificada de acordo com o seguinte algoritmo:

Pegue sua matrícula na UERJ, digamos que ela seja 199112340567. Cada letra será avançada ou recuada de acordo com o dígito de sua matrícula. Inicialmente as letras são avançadas, ou seja, a letra 'b' se torna 'c', se o dígito for 1. Quando aparecer um espaço, tabulaçao ou nova linha na mensagem, as letras subseqüentes têm o sentido de conversão invertido, ou seja, a letra 'b' se torna 'a', se o dígito for 1. Todo caracter de tabulação ou nova linha deve ser considerado como sendo um espaço em branco. O espaço em branco é considerado vir antes do 'a'. O programa não deve mudar o “case” das letras e os sinais de pontuação são simplesmente copiados, sem conversão, mas deve provocar o salto do dígito correspondente na matrícula. Para codificar a mensagem

“Celacanto provoca maremoto? Sim.”, com a matrícula acima, teríamos:
“Dnubdcqxoejknmfb yperjsvux?aRgj.”, com a matrícula repetida, na forma:
“19911234056719911234056719911234”, baseado na seguinte string de conversão:
“ abcdefghijklmnopqrstuvwxyz”

O programa deve poder receber um texto com várias linhas. Cada linha deve possuir um máximo de 100 caracteres. Se ultrapassar este limite, deve ser emitida mensagem de erro. No final, como foram removidos os caracteres de nova linha, seu programa deve fornecer como saída o texto criptografado formatado em linhas de 80 caracteres no máximo.

Para garantir que a mensagem não foi adulterada, você também imprime, no final, o resultado da soma de todos os caracteres da mensagem original, depois de convertidos os caracteres de nova linha e tabulação para espaço em branco (lembre-se, o caracter de nova linha e o de tabulação devem somar como se fossem espaços em branco.

Pontuação

  1. Tratamento correto do caso para linhas com mais de 100 caracteres: 1pt.
  2. Formatação do texto de saída em 80 caracteres por linha: 1pt.
  3. Processamento correto das maiúsculas: 1pt.
  4. Processamento de textos de várias linhas: 1pt.
  5. Processamento correto da substituição de avanço: 1,5pt.
  6. Processamento correto da inversão do sentido da substituição das letras: 1,5pt.
  7. Processamento correto dos sinais de pontuação, ignorando o dígito na matrícula: 1pt.
  8. Soma de caracteres da mensagem original correta: 1pt.
  9. Programa funcionando corretamente: 1pt.

Resolução

primeira_prova_-_2005-1.txt · Última modificação: 16/01/2007 16:28:28 (edição externa)
geomatica Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0