====== 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 ===== - Tratamento correto do caso para linhas com mais de 100 caracteres: 1pt. - Formatação do texto de saída em 80 caracteres por linha: 1pt. - Processamento correto das maiúsculas: 1pt. - Processamento de textos de várias linhas: 1pt. - Processamento correto da substituição de avanço: 1,5pt. - Processamento correto da inversão do sentido da substituição das letras: 1,5pt. - Processamento correto dos sinais de pontuação, ignorando o dígito na matrícula: 1pt. - Soma de caracteres da mensagem original correta: 1pt. - Programa funcionando corretamente: 1pt. ===== Resolução ===== [[Resolução Primeira Prova 2005-1]]