Instituto Superior de Engenharia de Lisboa Licenciatura em Engenharia de Electrónica e Telecomunicações e de Computadores 2ª Lista de exercícios de PROGRAMAÇÃO Semestre de Inverno 2013-2014 (Outubro 2013) 1. Elabore um programa que lê do teclado um valor inteiro longo n e calcule: 1.1 Quantos algarismos têm. 1.2 Qual é o maior algarismo e em que posição significativa se encontra (a unidade é posição 0, a dezenas é posição 1 e assim sucessivamente ….). 1.3 Somar todos os algarismos entre si. 1.4 Inverter os algarismos do número, ou seja, a unidade troca com o algarismo mais significativo e assim sucessivamente; (exemplo: 7523 para 3257). 1.5 Formar dois novos números com os algarismos do nº lido em que o primeiro só contém os algarismos pares e o segundo só contém os algarismos ímpares. import java.util.Scanner; public class Lista2Exer01AnalizarNumero{ public static void main( String[] args ){ Scanner teclado = new Scanner(System.in); System.out.println("digite o valor inteiro longo "); long n = teclado.nextLong(); /* Completar com código java tal que concretize o exercício proposto */ } } 2. Elabore um programa que leia do standard input dois valores n1, n2 positivos e calcula se esses dois números lidos são ”amigos”, se o forem então escreva essa mensagem em standard output ou ”não amigos” em caso contrário. Diz-se que dois números são amigos se cada um deles é igual à soma dos divisores próprios do outro. Os divisores próprios de um número positivo n são todos os divisores inteiros positivos excepto o próprio n. Um exemplo de números amigos são os números 284 e o 220, uma vez que a soma dos divisores de 220 dá 284 e vice-versa, como se mostra em: Divisores de 220-> 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Divisores de 284-> 1 + 2 + 4 + 71 + 142 = 220 3. Elabore um programa que leia do standard input um valor n positivo maior que 2 que faz a geração em standard output dos n valores da sequência dos números de Tribonnaci. Um número Tribonnaci de uma dada sequência é dado pela soma dos 3 anteriores, ou seja, o termo t(i) dessa sequência é dado por t(i) = t(i-1) + t(i-2) + t(i-3), sendo os 3 primeiros termos da sequência prédefinidos com 0, 2, 2. Se n=3 o output será 0, 2, 2, se n=6 o ouput será: 0, 2, 2, 4, 8, 14. 4. Elabore um programa que leia do standard input dois valores n1,n2 inteiros e calcula a multiplicação pelo processo da ”soma russa”. Este processo está descrito em: http://www.eb23-guifoes.rcts.pt/NetMate/sitio/curiosidades.htm#Multiplicação%20russa 5. Elabore o programa que lê do teclado sequência de números inteiros terminada por zero e calcule: 5.1 Quantos números foram lidos; 5.2 Total de mudanças de sinal de número positivo para número negativo; 5.3 Quantos números têm a maior subsequência crescente; 5.4 Qual é o maior e em que posição se encontra. 6. Elabore o programa onde deve definir os métodos referidos em 7. 8. 9. 10. para que os possa chamar e testar dentro da função main. Escreva os resultados no ecrã (console output). Use o critério de definir e testar um método de cada vez até concluir todos. 7. Elabore um método que recebe em parâmetro dois inteiros e calcula e devolve o máximo divisor comum entre esses dois números. Ver detalhes em: http://pt.wikipedia.org/wiki/M%C3%A1ximo_divisor_comum 8. Elabore um método que recebe em parâmetro dois inteiros e calcula e devolve o menor múltiplo comum entre esses dois números. Ver detalhes em: http://pt.wikipedia.org/wiki/M%C3%ADnimo_m%C3%BAltiplo_comum 9. Elabore um método que recebe em parâmetro um inteiro e verifica se é ou não número primo, devolvendo true ou false respectivamente. Ver detalhes em: http://pt.wikipedia.org/wiki/N%C3%BAmero_primo 10. Elabore um método que recebe em parâmetro um inteiro e verifica se é ou não número capicua, devolvendo true ou false respectivamente. Ver detalhes em: http://pt.wikipedia.org/wiki/Capicua 11. Elabore um programa que gera o “Pinheiro de Natal” (fig.1). O mesmo programa deve ser estruturado em termos de métodos. Vamos dar uma ajuda, escrevendo o código java do main. public class Lista2Exer12PinheiroNatal{ /** Definir todos os métodos chamados em main. Poderá caso considere necessário definir outros métodos que ajudam à resolução. */ public static void main( String[] args ){ int alt = ler("Altura do triangulo entre[3,7] "); fazTriangulo(alt); fazTriangulo(alt); fazTriangulo(alt); FazPe(alt, 5); } * *** ***** ******* ********* * *** ***** ******* ********* * *** ***** ******* ********* ***** ***** ***** ***** ***** Exemplo: altura=5 e base=altura*2-1 } 12. Elabore um programa que gera uma tabela dos primeiros 200 número primos, em que deve colocar 16 em cada linha e todos alinhados à direita em colunas. O programa deve ser estruturado em termos de métodos. 2 3 59 61 ……. 5 67 7 71 11 73 13 79 17 83 19 89 23 29 31 37 41 43 47 53 97 101 103 107 109 113 127 131