Lista - Linguagem C
Introdu¸c˜ ao ` a Ciˆ encia da Computa¸c˜ ao Lista 8 – Modulariza¸c˜ ao (Fun¸co
˜es)
Prof. Dr. Rog´ erio Galante Negri
1. Fa¸ca uma fun¸ca˜o arctan que recebe o n´ umero real x ∈ [0, 1] e devolve uma aproxima¸c˜ao do arco tangente de x (em radianos) atrav´es da s´erie
3
5
7
k arctan(x) = x − x3 + x5 − x7 + · · · at´e que | xk | < 10−4 .
2. Fa¸ca uma fun¸ca˜o angulo que recebe um ponto de coordenadas cartesianas reais (x, y), com x > 0 e y > 0 e devolve o aˆngulo formado pelo vetor (x, y) e o eixo horizontal. Use a fun¸c˜ao do item anterior. Note que a fun¸c˜ao s´o calcula o arco tangente de n´ umeros entre 0 e 1, e o valor devolvido ´e o aˆngulo em radianos. Considere π = 3.14 radianos, que ´e igual a 180 graus. Para calcular o valor do aˆngulo pedido, use: arctan xy , caso x < y
.
α= π − arctan xy , caso contr´ario
2
3. Escreva uma fun¸c˜ao que recebe m ∈ Z+ e devolve 1 se m ´e primo ou 0 em caso contr´ario.
4. Escreva um programa que leia n ∈ Z+ e imprima a soma dos n primeiros n´ umeros primos.
5. Escreva uma fun¸ca˜o que recebe como parˆametros dois n´ umeros a e b e devolve o mdc (m´aximo divisor comum) de a e b, calculado por meio do algoritmo de Euclides.
6. Escreva uma fun¸c˜ao que recebe como parˆametro um valor correspondente a um ano qualquer e devolve 1 se ano for bissexto ou 0 em caso contr´ario. Lembrando que um ano ´e bissexto se for divis´ıvel por 4 mas n˜ao por 100.
7. Escreva uma fun¸ca˜o que tem como parˆametros de entrada e sa´ıda trˆes n´ umeros inteiros, dia, mˆ es e ano, representando uma data, e modifica esses inteiros de forma que eles representem o dia seguinte.
8. Escreva um programa que leia um inteiro positivo n e uma sequˆencia de n datas e imprime, para cada data, o dia seguinte.
9. Considere as seguintes f´ormulas de recorrˆencias:
2
F1 = 2
G1 = 1
F2 = 1
G2 = 2
Fi = 2 · Fi−1 + Gi−2 ; i ≥ 3
Gi = ·Gi−1 + 3 · Fi−2 ; i ≥ 3
a) Fa¸ca uma fun¸ca˜o de nome