Document

Propaganda
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.
Download