Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Prova Segunda Chamada - 07 de julho de 2008 1o Problema: As Casas da Sorte Um programador de computador mora em uma rua com n casas e de frente para o mar. Portanto, somente há casas de um lado da rua. As casas são numeradas consecutivamente, começando em 1. Toda noite o programador sai de casa para passear com seu cachorro e randomicamente escolhe um lado para percorrer. Ele sempre vai até o final da rua e volta para casa. Uma noite ele decidiu somar os números das casas por onde passou. Esta soma foi feita somente no caminho de ida e excluiu a sua própria casa. Na noite seguinte ele tomou a direção contrária e fez a mesma conta. Para sua enorme surpresa as duas somas deram o mesmo resultado. Embora isto seja, obviamente, determinado pelo número de sua casa e do número de casas de sua rua, ele acha que isto era um sinal de sorte e decidiu que a partir daquele instante somente iria morar em casas com esta propriedade. A sua tarefa é escrever um programa que descubra os seis primeiros pares (número de casas na rua, casa da sorte) que satisfazem esta propriedade. Começe o seu teste com uma rua de 5 casas e prossiga até que 6 pares sejam encontrados. A Entrada Este programa não precisa de entrada. A Saı́da Imprimir o número da casa da sorte, a quantidade de casas na rua e a soma dos números das casas de uma das direções. Observe os valores de saı́da e escolha tipos de variáveis compatı́veis. Exemplo de saı́da Casa Casa Casa Casa Casa Casa da da da da da da sorte sorte sorte sorte sorte sorte = = = = = = 6, 35, 204, 1189, 6930, 40391, Casas Casas Casas Casas Casas Casas na na na na na na rua rua rua rua rua rua = = = = = = 8, 49, 288, 1681, 9800, 57121, Fim do programa. 1 Soma Soma Soma Soma Soma Soma = 15 = 595 = 20706 = 706266 = 24008985 = 815696245 2o Problema: Palavras Cruzadas O conhecido passatempo de palavra cruzadas é composto por uma matriz retangular de quadrados brancos e pretos e duas listas de definições. Uma das listas de definições é para palavras escritas da esquerda para a direita nos quadrados brancos (linhas) e a outra lista é para palavras que devem ser escritas de cima para baixo nos quadrados brancos (colunas). Uma palavra é uma seqüência de dois ou mais caracteres do alfabeto. Para resolver um jogo de palavras cruzadas, as palavras correspondentes às definições devem ser escritas nos quadrados brancos da matriz. A Figura 1 ilustra um exemplo de matriz de palavas cruzadas. Figura 1: Exemplo de matriz de palavras cruzadas Uma palavra horizontal é escrita em uma seqüência de quadrados brancos em uma linha, iniciandose em um quadrado branco que tem um quadrado preto à esquerda ou que está na primeira coluna à esquerda. A seqüência de quadrados, para esta palavra, continua da esquerda para a direita, terminando no quadrado branco imediatamente anterior a um quadrado preto, ou no quadrado branco da coluna mais à direita da grade. A sua tarefa procurar as palavras escritas em apenas uma linha da matriz das palavras cruzadas. Entrada A entrada consiste de vários casos de teste. Cada caso de testes é composto por uma única linha que corresponde a uma linha de uma solução de um problema de palavras cruzadas. Cada uma destas linhas contém N < 100 caracteres. Caracteres possı́veis são as letras do alfabeto ou ’*’, que é usado para representar um quadrado preto. O final do conjunto de testes é representado por uma linha vazia. Saı́da Para cada caso de teste seu programa deve produzir a lista das palavras encontradas no caso de teste. A lista das palavras deve ser precedida por um identificador do conjunto de teste, no formato Teste n, onde n é numerado a partir de 1. O formato da saı́da deve ser exatamente igual ao indicado no exemplo abaixo. Exemplo Entrada: *PASCAL* ATOS**J LA**DIA*J* Saı́da: Teste 1 PASCAL Teste 2 ATOS Teste 3 LA DIA 2 3o Problema: Aquecimento Global Nestes tempos de aquecimento global o acompanhamento de temperaturas se tornou uma atividade importante. Uma estação meterológica mede e armazena a temperatura no polo sul ao meio dia há muitos anos. Um pesquisador resolveu fazer alguns cálculos a partir destes dados. Tarefa A sua tarefa é escrever um programa que leia de um arquivo texto chamado temperaturas.txt as N temperaturas ti armazenadas e imprima os seguintes valores: • menor temperatura, tmin ; • maior temperatura, tmax ; • temperatura média, tmed ; qP (ti −tmed )2 • desvio padrão, dp = N Entrada Os dados no arquivo têm o seguinte formato. A primeira linha contém um número inteiro N informando o total de temperaturas armazenadas no arquivo. As N linhas restantes contém as temperaturas armazenadas e que são números reais. Saı́da A saı́da deve ser feita com o formato indicado abaixo. Exemplo de Arquivo de Entrada: 10 -3.0 -6.0 -9.0 -2.0 -12.0 -20.0 -15.5 -14.5 -30.5 -2.5 Saı́da para o Exemplo da Entrada Temperatura minima: -30.500 Temperatura maxima: -2.000 Temperatura media: -11.500 Desvio padrao: 8.594 3 4o Problema: Números Amigáveis Números amigáveis são duplas de números em que um é igual a soma dos divisores próprios do outro e vice-versa. Vamos considerar que um número (dp > 0) é divisor próprio de um número N quando o resto da divisão de N por dp é zero. Consideramos também que N não é divisor próprio de si mesmo. Por exemplo, somando-se os divisores de 220 (1, 2, 4, 5, 10, 11, 20, 44, 55, 110) chega-se a 284. Somando-se os divisores de 284 (1, 2, 4, 71, 142) obtém-se 220. Por isso os dois números são amigos. Tarefa Escreva um programa que leia uma série de pares de números inteiros (≥ 0) e imprima se eles são amigos ou não. Entrada A entrada consiste de uma série de pares de números inteiros. A seqüencia termina quando um par de zeros for lido. Saı́da A saı́da é a palavra AMIGAVEIS se o par for amigo e NAO AMIGAVEIS no caso contrário. Exemplo de Entrada: 220 284 300 500 2620 2924 0 0 Saı́da para o Exemplo de Entrada AMIGAVEIS NAO AMIGAVEIS AMIGAVEIS 4