Lista 6 - PDII - 08/1
Prof. Andréa Maria Pedrosa Valli
1. Escrever um procedimento que calcule o valor aproximado de π através da série
S =1−
1
1
1
+ 3 − 3 + ···,
33
5
7
sendo π = (32 × S)1/3 . Deverá ser fornecido ao procedimento o número de termos da série
para o cálculo de π. Escrever um algoritmo que, fornecendo ao procedimento, sucessivamente,
o número de termos (1, 2, 3, · · · , N ), imprima em um arquivo o valor aproximado de π e o
número de termos utilizado. O valor de N deverá ser lido.
2. Escrever uma função que calcule a distância entre dois pontos de um plano, sendo fornecido
as suas coordenadas x1 , y1 e x2 , y2 . Faça uma função que calcule a área do triângulo em
função de seus lados, a, b, c,
p
area = p(p − a)(p − b)(p − c)
onde p = (a + b + c)/2 é o semiperı́metro do triângulo. Utlizando as funções acima, escrever
um algoritmo que leia de um arquivo 10 conjuntos de pontos do plano, x1 , y1 , x2 , y2 e x3 , y3 ,
cada um em uma linha, e determine as áreas dos triângulos formados por estes pontos.
Imprimir, para cada conjunto de pontos, as coordenadas lidas e a sua área.
3. Faça um algoritmo para resolver o sistema Ax = b,
x1
b1
a11 a12
, x=
, b=
A=
x2
b2
a21 a22
usando a regra de Cramer:
b1 a12
b2 a22
x1 =
det A
a11 b1
a21 b2
, x2 =
det A
Para isto, organize o seu algoritmo da seguinte forma:
• faça um procedimento para leitura dos dados de entrada;
• faça uma função “determinante” que entre com os coeficientes de uma matriz 2x2
(a11 , a12 , a21 , a22 ) e calcule o seu determinante;
• faça um procedimento que entre com a matriz A e o vetor b, saia com a solução do sistema
usando a regra de Cramer, caso exista, ou com uma variável (lógica ou inteira) que
indique que a solução não existe (det A = 0). Utilize para o cálculo dos determinantes
em x1 e x2 a função “determinante”;
• faça um procedimento de saı́da dos resultados: a solução do sistema, se existir, ou a
mensagem “solução impossı́vel”, caso contrário.
4. Faça um algoritmo para ler um vetor de N componentes (N ≤ 30). Após a leitura, ler um
número real e pesquisar no vetor qual a componente que está mais próxima do número real
lido (desconsidere empate). Imprimir a componente encontrada.
Observações:
• a leitura do vetor deve ser feita através de um procedimento.
• a pesquisa da componente que mais se aproxima do número real lido deve ser feita
através de uma função que retorne o valor da componente encontrada.
5. Um curso de pós-graduação em veterinária selecionou, através de análise de currı́culo e entrevista, 20 alunos para o curso. Ao iniciar o curso, foi explicado que o aluno que, na primeira
prova ficasse abaixo da média da turma, seria desligado. Faça um algoritmo para ler os
nomes e as notas dos alunos da turma e retirar os alunos que ficarem abaixo da média da
turma. Imprimir os alunos que permaneceram na turma.
Exemplo:
turma = (Márcio Cláudio Carlota Maria Marcos Luı́s)
notas = (10 7 9 8 6 8) média = 8
turma = (Márcio Carlota Maria Luı́s)
Faça:
• um procedimento para leitura dos dados de entrada;
• uma função para calcular a média da turma;
• uma função para procurar os alunos que estão abaixo da média da turma;
• um procedimento para exclusão;
• um procedimento para impressão.
6. Faça um algoritmo para verificar se uma matriz quadrada de ordem n (n ≤ 20) é diagonalmente dominante, ou seja, se a seguinte condição é satisfeita:
|aii | >
n
X
|aij |,
i = 1, 2, ...n
j=1,j6=i
Para isso, faça um procedimento que entre com a ordem da matriz, a matriz e saia com
uma variável lógica com valor verdadeiro, se a condição é satisfeita e, um valor falso, caso
contrário. Escreva na tela uma mensagem que indique se a matriz é diagonalmente dominante
ou não.
7. Escrever um procedimento que determine o conjunto interseção entre dois conjuntos A e B
de caracteres. Escrever um procedimento que determine o conjunto união entre os mesmos
conjuntos A e B. Escrever um algoritmo que leia 50 pares de conjuntos de 100 caracteres cada
um, determine e escreva a interseção e a união desses conjuntos, utilizando os procedimentos
anteriormente definidos.
8. Ao iniciar o curso foi explicado que os alunos repetentes que tirarem nota acima da média
na primeira prova poderão ser matriculados na turma. Faça um algoritmo que forneça, para
uma turma de 45 alunos, os nomes e as notas (organizadas em ordem decrescente), os nomes
e as notas dos 5 alunos repetentes e inclua na turma os alunos repententes que tiraram nota
maior que a média. Saia com a nova turma (nomes e notas) e com a média. Faça:
• uma função para calcular a média da turma;
• uma função para procurar os alunos repententes que ficaram acima da média da turma;
• um procedimento para incluir os repetentes na turma, mantendo a ordem decrescente
das notas.
9. Faça um algoritmo para dividir sucessivamente, k vezes, um segmento AB do plano ao meio
até que fique menor que 0.00001. Para isto, construa os seguintes subalgoritmos:
• uma função que calcule
p a distância entre dois pontos no plano, fornecendo as suas
coordenadas (dist = (x2 − x1 )2 + (y2 − y1 )2 ).
• um procedimento que entre com as coordenadas de dois pontos no plano e saia com as
coordenadas do ponto médio e com a distância entre um dos pontos ao ponto médio.
Utilize a função distância implementada.
O seu algoritmo deve ler as coordenadas de dois pontos do plano e sair com o número de
vezes que intervalo foi dividido, k, o ponto médio final e o tamanho final do intervalo.
Download

Lista 6 - PDII - 08/1 Prof. Andréa Maria Pedrosa Valli 1. Escrever um