Vous êtes sur la page 1sur 5

Fundao CECIERJ - Vice Presidncia de Educao Superior a Distncia

Curso de Tecnologia em Sistemas de Computao Disciplina: Projeto e Desenvolvimento de Algoritmos AD1 1 semestre de 2009. Nome Assinatura 1 questo (5.0 pontos): Ser que o algoritmo termina? Descrio do Problema Um requisito de todo algoritmo que ele termine, ou seja, no fique executando eternamente. Sabemos que alguns algoritmos sempre terminam e que outros iro executar para sempre. Para outros algoritmos ainda no temos uma prova que eles iro terminar. Um algoritmo que sabemos sempre ir terminar conhecido por alguns como o algoritmo dos cinco nmeros ou algoritmo do pentgono. A definio do algoritmo a seguinte. Escolha cinco nmeros inteiros cuja soma seja maior que zero. Entre estes cinco nmeros, pelo menos um deles deve ser menor que zero. Por exemplo, os nmeros -3, 1, 5, -2, 7 formam um conjunto possvel de nmeros porque a sua soma vale 7 e entre eles h pelo menos um nmero negativo. Escolha um dos nmeros negativos e o multiplique por -1. Por exemplo, o -2 se tornar 2. Em seguida subtraia o nmero anterior e o posterior ao escolhido deste novo valor, no caso o valor 2. O nosso conjunto ficar igual a -3, 1, 3, 2, 5. Repita o procedimento at que todos os nmeros do conjunto se tornem positivos. possvel provar que este algoritmo sempre termina, isto , caso as regras iniciais sejam obedecidas, sempre chegaremos a um conjunto em que todos os nmeros so positivos. Importante, considere que o anterior do primeiro elemento o ltimo e o posterior do ltimo o primeiro. Tarefa A sua tarefa escrever um algoritmo que leia cinco nmeros inteiros. Considere que a soma dos nmeros fornecidos ser sempre positiva e pelo menos um deles ser negativo. O seu algoritmo dever imprimir a cada passo os cinco nmeros gerados aps as modificaes. Observe que em cada passo pode haver mais de um nmero negativo e portanto para a mesma entrada podemos ter mais de uma soluo, mas o algoritmo sempre ir terminar. Entrada A entrada constar dos cinco nmeros lidos

Exemplos de Entrada
-3 -1 1 0 5 -2 1 2 7 3

Sada Na sada imprima os conjuntos que iro sendo gerados a cada passo do algoritmo. Exemplos de Sada Primeiro conjunto de entrada exemplo
-3 1 3 -2 1 2 1 2 -1 0 1 -1 0 1 5 -2 5 -2 3 -2 1 2 1 1 0 2 2 2 7 4 4 2 3 2 2

Segundo conjunto de entrada exemplo

Observao: Para resolver esta questo voc precisar utilizar um comando simples e ainda no visto no curso. Trata-se de um comando que serve para repetir um grupo de comandos certo nmero de vezes. Este o comando enquanto. Voc pode entender o funcionamento do comando com o pequeno exemplo abaixo que l 10 pares de nmeros e imprime a sua mdia. Os comandos entre o enquanto e o fim enquanto sero repetidos 10 vezes.
i <- 1 enquanto i <= 10 faa leia nota1, nota2 media <- (nota1 + nota2)/2 imprima media i <- i + 1 fim enquanto

2 questo (5.0 pontos): Algarismos romanos Descrio do Problema O sistema de numerao romana (ou nmeros romanos) desenvolveu-se na Roma Antiga e utilizou-se em todo o seu Imprio. Neste sistema as cifras escrevem-se com determinadas letras, que representam os nmeros. As letras so sempre maisculas, j que no alfabeto romano no existem as minsculas, as letras so I, V, X, L, C, D e M. As equivalncias dos numerais romanos com o sistema decimal so as seguintes: Decimal Romana 1 5 10 50 100 500 1.000 I V X L C D M

No sistema de numerao romano as letras devem situar-se da ordem de maior valor para a de menor valor. No se deve escrever mais de trs I, ou trs X, ou trs C em qualquer nmero. Se estas letras se situam atrs de um V, um L, ou um D, ( Exemplo: IX, XC ou XL, que significam, 9, 90, 40 respectivamente), subtrai-se o seu valor cifra das ditas letras. Os romanos desconheciam o zero, introduzido posteriormente pelos rabes, de forma que no existia nenhuma forma de representao deste valor. Para cifras elevadas os romanos utilizavam um travesso colocado por cima da letra correspondente. O travesso multiplicava o valor da letra por 1.000. Por exemplo, um C correspondia ao valor 100.000 (100 x 1.000), e um M correspondia ao valor 1.000.000 (1.000 x 1.000). Apresentam-se vrios exemplos de nmeros romanos, com as suas equivalncias decimais:

Decimal 1 2 3 4 5 6 7 8 9 10 104 1.444 2.008 3.000

Romana I II III IV V VI VII VIII IX X CIV MCDXLIV MMVIII MMM

3.999 MMMCMXCIX

Tarefa A sua tarefa escrever um algoritmo que converta um nmero inteiro lido do teclado no seu equivalente expresso em algarismos romanos. Observaes: Considere que o nmero digitado pelo usurio est compreendido no intervalo [1..50]. No necessrio escrever cdigo para verificar essa condio. Considere em sua soluo a existncia do procedimento imprime(ch, n) que imprime n vezes na sada padro o caracter ch Exemplo de utilizao:
imprime('M', 3) imprime('C', 1)

resultaria impresso na sada:


MMMC

Exemplos de entradas e sadas:

Entrada: 33 Sada: XXXIII Entrada: 48 Sada: XLVIII