Revisão da Java Ex1 Crie um programa que determine a partir das coordenadas de 3 pontos, fornecidas pelo utilizador, o tipo de triângulo que estas representam (equilátero, isósceles ou escaleno). Nota: Triângulo equilátero tem os 3 lados iguais. Triângulo isóscele tem 2 lados iguais. Triângulo escaleno tem os 3 lados diferentes. Implementa a classe Ponto, para representar as coordenadas, e a classe Triangulo, para representar e testar triângulos. Em separado implementa a classe que contém o programa principal e faz uso das outras duas para cumprir os objectivos pretendidos. Ex2 Escreva um método que receba uma tabela de caracteres (tab) e um caractere (c1) e retorne a quantidade de caracteres c1 encontrados na tabela tab. Faça código no método main que demonstre a utilização deste método. Ex3 Escreva um método recursivo que permita obter o resultado de A-B sendo A e B inteiros não negativos e B menor que A. Nota: a-b = a if b=0 a-b =(a-1) - (b-1) Ex4 a) Na classe TabelaUtil, estão definidos métodos que permitem realizar diversos processamentos sobre uma tabela bidimensional. Faça o código dos seguintes métodos: • Preenche uma tabela bidimensional de inteiros com números aleatórios até 100 (preencheTab). • Imprima os elementos da tabela bidimensional em forma de matriz (imprimeTab). • Devolva a soma dos números de uma tabela bidimensional que forem divisíveis por 5 (somaDiv5). b) Demonstre o uso dos métodos da classe TabelaUtil, numa outra classe. Ex1 (Resolução) public class Ponto { private double x,y; public Ponto(double a, double b){ x =a; y =b; } public public public public void setX(double a) {x=a;} void setY(double a) {y=a;} double getX() {return x;} double getY() {return y;} public String toString() { return x+";"+y; } public double distOrigem() { return Math.sqrt(getX()*getX() + getY()*getY()); } // Calcula distancia entre dois pontos public double distancia(Ponto p) { return Math.sqrt((getX()-p.getX())*(getX()-p.getX()) + (getY()-p.getY())*(getY()-p.getY())); } } public class Triangulo { private Ponto p1,p2,p3; public Triangulo(Ponto np1, Ponto np2, Ponto np3){ p1=np1; p2=np2; p3=np3; } public boolean equilatero () { double d1, d2, d3; d1=p1.distancia(p2); d2=p2.distancia(p3); d3=p3.distancia(p1); return d1==d2&&d2==d3; } public boolean isoscele () { double d1, d2, d3; d1=p1.distancia(p2); d2=p2.distancia(p3); d3=p3.distancia(p1); return ((d1==d2) && (d2!=d3)) || (d2==d3) && (d1!=d2)) || (d3==d1) && (d1!=d2)); } public boolean escaleno() { double d1, d2, d3; d1=p1.distancia(p2); d2=p2.distancia(p3); d3=p3.distancia(p1); return (d1!=d2)&&(d2!=d3)&&(d3!=d1); } } public class Ex1 { public static void main(String[] args){ Ponto p1, p2, p3; p1 = new Ponto (2,2); p2 = new Ponto (6,6); p3 = new Ponto (2,6); Triangulo t1; t1=new Triangulo(p1,p2,p3); if (t1.equilatero()) System.out.println("Triangulo equilatero"); if (t1.isoscele()) System.out.println("Triangulo isoscele"); if (t1.escaleno()) System.out.println("Triangulo escaleno"); } } Ex2 (Resolução) public class Ex2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char [] tab={'a','s','d','f','a','s','d','f','a','s','d','f'}; System.out.println("Introduza o caracter a procurar: "); char c1 = sc.next().charAt(0); int vezes=procura(tab,c1); System.out.println("Caracter "+c1+" encontra-se "+vezes+" vezes"); } static int procura(char[] tab, char c1) { int cont=0; for(int i=0;i<tab.length;i++) if (tab[i]==c1)cont++; return cont; } } Ex3 (Resolução) public class Ex3 { public static void main(String[] args) { System.out.println("Digite o inteiro A:"); int a = Le.umInt(); System.out.println("Digite o inteiro B:"); int b = Le.umInt(); System.out.println("A-B=" + subtr(a,b)); } static long subtr(int a, int b) { if (b==0) return a; return subtr(--a,--b); } } Ex4 (Resolução) import java.util.Random; class TabelaUtil { public static void preencheTab(int tabela[][]) Random random = new Random(); for (int i=0; i < tabela.length; i++) for (int j=0; j < tabela[i].length; j++) tabela[i][j] = random.nextInt(100); } { public static void imprimeTab(int tabela[][]) { for (int i=0; i < tabela.length; i++) { System.out.println(); for (int j=0; j < tabela[i].length; j++) System.out.print(tabela[i][j]+" ; "); } } public static int somaDiv5(int tabela[][]) { int soma=0; for (int i=0; i < tabela.length; i++) for (int j=0; j < tabela[i].length; j++) if (tabela[i][j]%5==0) soma+=tabela[i][j]; return soma; } } class Teste{ public static void main(String[] args){ int tab[][] = new int[5][4]; TabelaUtil.preencheTab(tab); TabelaUtil.imprimeTab(tab); System.out.println(); System.out.println("Soma: "+TabelaUtil.somaDiv5(tab)); } }