Aula prática 3 Elaborar um programa para mostrar uma tabela de senos, cosenos e tangentes para ângulos de 15 em 15 graus, entre 0 e 360 graus, como mostra a fig. seguinte. x 0: 15: 30: 45: 60: 75: 90: 105: 120: 135: 150: 165: 180: sin(x) 0.00000 0.25882 0.50000 0.70711 0.86603 0.96593 1.00000 0.96593 0.86603 0.70711 0.50000 0.25882 0.00000 cos(x) 1.00000 0.96593 0.86603 0.70711 0.50000 0.25882 0.00000 -0.25882 -0.50000 -0.70711 -0.86603 -0.96593 -1.00000 tg(x) 0.00000 0.26795 0.57735 1.00000 1.73205 3.73205 Infinite -3.73205 -1.73205 -1.00000 -0.57735 -0.26795 -0.00000 ................................................. a) Elaborar um programa que leia um número inteiro positivo representando o número de bilhete de identidade, e calcule o dígito de verificação (apresentado à frente do número no BI). O cáculo consiste em obter a soma pesada dos dígitos, em que o dígito de menor peso tem peso 2 , o seguinte peso 3 e asssim sucessivamente. O dígito de verificação deve ser igual à diferença entre 11 e o resto da divisão por 11 da soma obtida. E se o resultado dá 10 ou 11? Uma vez que há apenas um dígito de verificação procure descobrir o que acontece nesse caso. b) (Para quem não fez o TPC 1)Elabore um programa que leia do teclado (standard input) dois valores inteiros positivos e calcule se esses dois números lidos são ”amigos”. Diz-se que dois números são amigos se cada um deles é igual à soma dos divisores próprios do outro. 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 é mostrado a seguir: Divisores próprios de 220-> 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Divisores próprios de 284-> 1 + 2 + 4 + 71 + 142 = 220 c) Realize um programa que imprima todos os pares de números amigos de 0 a 1000000. d) Implemente funções que recebem por parâmetro um long int n com o propósito de retornar: 1) O número de algarismos de n. 2) A soma de todos os algarismos. 3) O número que resulta da inversão dos dígitos de n (exemplo: 7523 para 3257). 4) Verificar se o número é capicua, ou seja, se lido da esquerda para a direita ou da direita para a esquerda tem o mesmo valor. Exemplos: 1, 2, 9, 11, 22, ... 99, 101, 111, ...... 123321 ... e) Implemente as seguintes funções: void print_array( int [] arr ); void print_array_until( int [] arr, int until ); void print_array_ordered( int [] arr, int first_idx, int end_idx, int order); O objectivo de cada uma destas funções é o mesmo, mas as definições são diferentes. Todas devem escrever em output os valores armazenados. As duas primeiras escrevem os valores por ordem crescente de índices do array recebido em parâmetro e a terceira escreve de acordo com o sentido indicado no último parâmetro, respectivamente 0-ordem crescente de índice,1-ordem decrescente de índice. A primeira função tem o total de elementos armazenado no índice 0 e a segunda função tem o total de elementos passado em parâmetro. A terceira função tem a indicação do índice inicial e índice final através do segundo e terceiro parâmetro.