UNIVERSIDADE PARA O DESENVOLVIMENTO DO ESTADO E DA REGIÃO DO PANTANAL Coordenadoria dos cursos de Ciência da Computação e Engenharia da Computação V MARATONA DE PROGRAMAÇÃO – ETAPA 1 (09/05/2009) Questão 1 - A precisão dos dados armazenados em Disco, ou mesmo a segurança de tais dados podem ser implementadas utilizando um bit de paridade. Definimos a paridade de um inteiro n como a soma dos seus bits em representação binária computada em módulo de dois. Como exemplo, o número 5510=1101112 possui cinco 1s em sua representação binária e, portanto, ele possui paridade 5 (mod 2), ou 1. Assim sendo, faça um programa que receba um número N inteiro como entrada e calcule sua paridade, para N>0. Exemplo de Entrada 1 5 9 21 Exemplo de Saída A paridade de 1 é 1 A paridade de 5 é 0 A paridade de 9 é 0 A paridade de 21 é 1 Questão 2 - Escreva um programa que leia uma linha do teclado de tamanho máximo de 20 (vinte) caracteres. A linha somente contém letras e devem ser convertidas para maiúsculas. Divida a linha em blocos de 5 letras. Dentro de cada bloco o seu programa deve trocar a primeira letra pela seguinte no alfabeto, a segunda letra por duas letras adiante no alfabeto, a terceira por três letras no alfabeto e, assim, até a quinta. Os espaços em branco devem ser retirados da frase. Letras do Alfabeto a serem consideradas: ABCDEFGHIJKLMNOPQRSTUVXWYZ Considere o seguinte exemplo. 1. Frase lida EVA VIU A UVA 2. Retirada dos espaços em branco EVAVIUAUVA 3. Divisão em blocos de 5 (Espaços em branco mostrados para facilitar entendimento) EVAVI UAUVA 4. Criptografia FWDZN VCWZF 5. O que será impresso FWDZNVCWZF O imperador romano Cesar usava um sistema simples para codificar as mensagens que enviava aos seus generais. Neste sistema cada letra era substituída por três letras à frente no alfabeto. A sua missão é mais simples ainda, escrever um programa que converta cada letra, e somente as letras, de uma mensagem de até 20 (vinte) caracteres para a letra imediatamente posterior. Note que a letra 'z' deve ser convertida para a letra 'a', e a letra 'Z' para 'A'. Questão 3 - Letras do Alfabeto a serem consideradas: ABCDEFGHIJKLMNOPQRSTUVXWYZ Exemplo: Entrada: aXyZ Saída: bWzA Questão 4- A descoberta dos números Amigos foi atribuída a Pitágoras, existindo, em torno deles, um grande misticismo, visto que representavam um papel importante na magia, feitiçaria e astrologia. Utilizavam-se os números amigos para fazer poções de amor e talismãs. Supõese que lhes tenham chamado amigos porque a partir de um podemos obter o outro. UNIVERSIDADE PARA O DESENVOLVIMENTO DO ESTADO E DA REGIÃO DO PANTANAL Coordenadoria dos cursos de Ciência da Computação e Engenharia da Computação V MARATONA DE PROGRAMAÇÃO – ETAPA 1 (09/05/2009) Dois números são considerados Amigos se cada um deles é igual à soma dos divisores próprios do outro. Divisores próprios de um número x são todos os seus divisores d, tal que d < x. Crie um programa que receba dois valores inteiros e diferentes entre si e mostre se representam ou não dois números amigos. Exemplo1: Entrada 220 e 284 Saída: São números amigos Exemplo2: Entrada 4e9 Saída: Não são números amigos Questão 5 - Um número primo é aquele que tem apenas dois divisores: - a unidade e o próprio número. Por exemplo, o número 2 é primo, porque tem apenas como divisores o 1 (a unidade) e o 2 (o próprio número). São exemplos de números primos: 2, 3, 5, 7, 11, 13, 17, 19, 23, ... O menor número primo e o único que é par é o número 2. Os números primos têm despertado a curiosidade dos matemáticos desde tempos remotos e continuam neste momento a ser um assunto que entusiasma muitas pessoas. Há muitos séculos o matemático grego Eratóstenes (275-194 a.C.) criou um processo, denominado de crivo de Eratóstenes, para encontrar números primos: Inicialmente, constrói-se uma tabela com os primeiros cem números naturais e depois se procede da seguinte forma: 1º) desta tabela, elimina-se o número 1; 2º) dos números restantes elimina-se os múltiplos de 2 (exceto o próprio 2 que é primo) ; 3º) dos números restantes, elimina-se os múltiplos de 3 (exceto o próprio 3 que é primo); 4º) dos números restantes, elimina-se os múltiplos de 5 (exceto o próprio 5 que é primo); 5º) dos números restantes, elimina-se os múltiplos de 7 (exceto o próprio 7 que é primo) Crie um programa que receba um número, obrigatoriamente, entre 1 (inclusive) e 50 (inclusive) e determine, usando o método proposto por Eratóstens, se trata-se de um número primo ou não. Exemplo1: Entrada: 12 Saída: Não é um número primo Exemplo2: Entrada: 17 Saída: É um número primo Questão 6 - Considere uma matriz de distância entre cidades 5 x5: Tabela de Distâncias 1.Campo 2.Terenos 3.Aquidauana 4.Nioaque 5.Dourados Grande 1.Campo Grande 23 120 190 230 2.Terenos 23 80 150 210 3.Aquidauana 120 80 60 4.Nioaque 190 150 60 290 5.Dourados 230 210 290 Considere também um vetor de viagem partindo de Aquidauana indo até Dourados pela seguinte rota (o índice indica o código da cidade do roteiro, ou os vértices): Exemplo: Indice 1 2 3 4 5 6 Cidade 3 2 1 4 5 0 Faça um programa que armazene a tabela de distâncias ilustrada acima em uma matriz de 5x5, escrevendo 0 – Zero para distâncias em branco (indicando que não possui rotas diretas), imprimindo na tela a tabela. Depois, receba através do teclado o roteiro (apenas os códigos UNIVERSIDADE PARA O DESENVOLVIMENTO DO ESTADO E DA REGIÃO DO PANTANAL Coordenadoria dos cursos de Ciência da Computação e Engenharia da Computação V MARATONA DE PROGRAMAÇÃO – ETAPA 1 (09/05/2009) das cidades – de 1 a 5, se caso digite 0 – Finalize o roteiro, veja exemplo acima), que deve ser armazenado em um vetor e, então, calcule a distância percorrida durante a viagem. (Veja abaixo 2 exemplos.). Se o usuário digitar roteiro sem conexão a mensagem “Erro no Roteiro” deverá ser exibida. Exemplo1 (onde há um roteiro sem conexão 5 3 Entrada: 2 1 5 3 0 Saída: “Erro no Roteiro” Exemplo 2 (De: Campo Grande Terenos) Entrada: 1 5 4 3 2 0 Saída: “Distância Percorrida em KM: 660 Questão 7 - Escreva um programa que leia 3 linhas de texto. Em cada linha há o nome de um aluno e duas notas. Estes dados estão separados por ponto e vírgula. Existe um ponto e vírgula ao final de cada linha. O programa deve ler estes dados e imprimir os valores lidos, a média das duas notas e se o aluno foi aprovado ou não (media >= 7). O formato de saída é: Exemplo: Entrada: Maria Silva; 10.0; 9.0; Antonio Oliveira; 9.0; 7.0; Pedro Luiz; 4.0; 5.0; Saída: Maria Silva 10.0 8.0 9.0 aprovado Antonio Oliveira 9.0 7.0 8.0 aprovado Pedro Luiz 4.0 5.0 4.5 reprovado Observação: Caso as notas sejam números não inteiros, não se preocupe em formatar a saída com apenas uma casa após o ponto. Questão 8 - Faça um programa que contenha uma função para desenhar na tela 3 quadrados. Sabe-se que o programa deve sortear o canto superior esquerdo, que o lado do quadrado possui 5 asteriscos (*) e que os demais quadrados devem começar onde o quadrado anterior terminou. Observações: A linha do primeiro quadrado deve ser no máximo 8. A coluna do primeiro quadrado deve ser no máximo 60. Entrada: Nenhuma UNIVERSIDADE PARA O DESENVOLVIMENTO DO ESTADO E DA REGIÃO DO PANTANAL Coordenadoria dos cursos de Ciência da Computação e Engenharia da Computação V MARATONA DE PROGRAMAÇÃO – ETAPA 1 (09/05/2009) Saída: 1º quadrado: Linha sorteada = 2 Coluna sorteada = 8 ***** * * * * * * * * ***** ***** * * * * * * * * ***** ***** * * * * * * * * ***** 3º quadrado: Linha = 14 Coluna = 18 2º quadrado: Linha = 8 Coluna = 13 UNIVERSIDADE PARA O DESENVOLVIMENTO DO ESTADO E DA REGIÃO DO PANTANAL Coordenadoria dos cursos de Ciência da Computação e Engenharia da Computação V MARATONA DE PROGRAMAÇÃO – ETAPA 1 (09/05/2009)