Exercícios de instruções de ciclo na linguagem C Com esta lista de exercícios o aluno pratica a escrita de programas que envolvem ciclos e a definição e invocação de novas funções . a) 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 ................................................. b) 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 calcular 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. c) 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 d) Realizar e testar a função double calc_juros(int total_anos, double mi, double tax) que retorna o montante total obtido em juros de um depósito a total_anos anos, com montante inicial mi à taxa de juro anual tax. e) 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 ... f) Elabore o programa que lê do teclado uma sequência de caracteres terminada por um amudança de linha e escreva na consola um gráfico de barras horizontais contabilizando as ocorrências das vogais lidas, com a seguinte apresentação: A, a | ************** (14) E, e | ********* ( 9) I, i | ** ( 2) O, o | ***** ( 5) U, u | * ( 1) g) Implemente a função int isPrime(int n) que recebe um número n e retorna true se o número for primo e false caso contrário. h) Realize um programa que apresenta os primeiros n número primos, sendo o valor n lido do standard input. Os números devem ser apresentados na forma de tabela, tendo cada linha 16 números como se mostra a seguir: i) 2 3 59 61 5 67 7 11 13 17 19 23 29 31 37 41 43 47 71 73 79 83 89 97 101 103 107 109 113 127 53 131 Realize um programa que tira partido da função isPrime da alínea e) para mostrar os divisores primos de um número. Sugestão: considere implementar a função auxiliar int nextPrime(int n) que retorna o primeiro primeiro superior a n. Exemplo: n: 129 divisores primos: 3 j) 43 Realize um programa que leia dois inteiros positivos que representam um número fraccionários e apresenta fracção equivalente na forma reduzida, isto é, com o mínimo numerador e denominador. Bom trabalho Jorge Martins