Programação @ Informática Web UC 11095 - Ficha 6 Universidade da Beira Interior, 2015/2016 Exercícios — Funções e Arrays Sempre que nesta ficha seja pedido para criar/escrever/fazer um programa, significa que queremos que seja implementado um programa em linguagem Java. 1. Pretendemos criar um programa para calcular o coseno do ângulo formado por dois vetores. Esta função recebe dois vetores de dimensão n e devolve como resultado um valor real em [-1, 1], sendo que: 1 significa que os vetores têm a mesma direção; -1 significa que estes têm direções opostas; 0 significa que os vetores são perpendiculares. A função define-se da seguinte forma: cos(⃗ u ,⃗v )= ⃗⋅⃗v u ‖⃗ u‖∗‖⃗v‖ Comece por criar uma função para o cálculo da norma e outra para o cálculo do produto interno. Depois crie uma função (double) cosAngulo(double[] u, double v[]). Experimente esta função, com diferentes vetores. 2. Escreva uma função para calcular o máximo divisor comum entre dois números inteiros. 3. Escreva uma função que verifique se um inteiro positivo é um número primo. 4. Escreva um programa que apresente os números primos entre valores a, b, são pedidos ao utilizador. 5. Sabe-se que devem existir números inteiros positivos, a ≤ b ≤ 1000, de tal modo que a o resultado da expressão mostrada a seguir é também um número inteiro. Escreva um programa para descobrir todos esse números. 2 2 a e b, usando a função anterior. Os a +b +1 a∗b 6. Um método numérico rápido para o cálculo da raiz quadrada de um número x consiste em utilizar o seguinte processo iterativo: 1 x y n= ( y n−1 + ) 2 y n−1 √ podendo y 0 ser uma aproximação grosseira a x , por exemplo y 0← x /2 . Escreva uma função para calcular a raiz quadrada por este processo. Não esquecer que o processo para quando y n− y n−1< erro , sendo este erro introduzido pelo utilizador. 7. Escreva a função int[] matrixLinha(int i, int[][] A) {...} que devolve um array com a linha i da matriz A. De igual modo, crie uma função para ler a coluna j de uma matriz. 8. Escreva a função boolean matrixMultiplicavel(int[][] A, int[][] B) matrizes são ou não multiplicáveis. 9. Usando as funções de 6 e 7, crie uma função para multiplicar duas matrizes de números inteiros. Teste a função criando um programa com pelo menos três matrizes pré-inseridas. Duas destas devem obviamente ser multiplicáveis. A multiplicação de uma linha por uma coluna deve ser feita usando a função do produto interno, implementada no exercício 1. que verifica se duas 10. Altere o programa anterior, de modo que as duas matrizes multiplicáveis sejam carregadas a partir de dois ficheiros: “A.txt” e “B.txt”. A matriz produto deve ser gravada no ficheiro “AB.txt”. UBI/DI/IW/Programação — 26 de Novembro de 2015