Triangulos[resolvido]

Pessoal, estou com um problema, preciso identificar 3 tipos de triangulo. Acutângulo, Retângulo e Obtusângulo. Como posso identificar?
foi facil o Acutangulo pois os 3 lados sao iguais, logo nao preciso calcular o angulo de cada lado.
Código

import java.util.Scanner;


class triangulos_11004 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a,b,c;
		while(true){
			a = scan.nextInt();
			b = scan.nextInt();
			c = scan.nextInt();
			if(a==0&&b==0&&c==0) break;
			if((a == b)&&(b==c)){
				System.out.println("a");
			}
			//agora quero identificar o angulo dos outros tipos
		}
	}
}

Dei uma pesquisada no google, porém encontrei diversos sites falando sobre como achar a altura etc etc… quero só o angulo interno, como posso calcular só o angulo?

Cara, esse seu problema é mto fácil, porém não entendi bem o que vc esta precisando?

Explica melhor? Você precisa apenas se ele é Acutângulo, retângulo ou obtusângulo?
Se for tá facil vc de cara tem que jogar num If por exemplo para saber se ele é retângulo:
a² = b² + c²
Sendo ‘a’ a hipotenusa, ‘b’ e ‘c’ os catetos.
(Note que a hipotenusa é sempre maior que os catetos.)

Depois veja:
Se não for retângulo, use a lei dos cossenos para ver se algum dos ângulos tem cosseno negativo.
Se sim, então o triângulo é obtusângulo.
(Ângulos maiores que 90° e menores que 180° têm cosseno negativo.)

Lei dos cossenos: cos  = (b² + c² - a²)/2bc

por fim:
aso ele não for retângulo e tampouco obtusângulo, só resta ser acutângulo. :slight_smile:

[quote=gpzim98]a² = b² + c²
Sendo ‘a’ a hipotenusa, ‘b’ e ‘c’ os catetos.
(Note que a hipotenusa é sempre maior que os catetos.)

Depois veja:
Se não for retângulo, use a lei dos cossenos para ver se algum dos ângulos tem cosseno negativo.
Se sim, então o triângulo é obtusângulo.
(Ângulos maiores que 90° e menores que 180° têm cosseno negativo.)

Lei dos cossenos: cos  = (b² + c² - a²)/2bc

por fim:
aso ele não for retângulo e tampouco obtusângulo, só resta ser acutângulo. :)[/quote]

A fonte desse texto é o link que postei logo acima. :slight_smile:

sim, eu apenas organizei o codigo, da forma como ele deve fazer seus If’s/Else…

mas eu preciso dos angulos, como eu vou pegar tipo a=2 b= 5 c=2 e saber os angulos… e tipo… como sei que nao da pra ser um triangulo???

Por exemplo, para eu fazer o retangulo preciso saber quem é a hipotenusa. Como vou guardar que é a… ou que é b…
pois eu pensei assim

maior=a;
if (maior < b)
				maior = b;
			if (maior < c)
				maior = c;

porem… eu só terei o numero maior… nao quem é o maior entendem?

Pessoal, agora vai… ele ja esta identificando se é todos os lados iguais e se ele é retangulo… vlw!!! só falta mais um se nao for nenhum dos tres, nao é triangulo.

import java.util.Scanner;

class triangulos_11004 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b, c, maior;
		while (true) {
			a = scan.nextInt();
			b = scan.nextInt();
			c = scan.nextInt();

			if (a == 0 && b == 0 && c == 0)
				break;
			if ((a == b) && (b == c)) {
				System.out.println("a");

			}
			maior = a;
			if ((maior * maior) == (b * b) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < b)
				maior = b;
			if ((maior * maior) == (a * a) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < c)
				maior = c;
			if ((maior * maior) == (b * b) + (a * a)) {
				System.out.println("r");
				break;
			}
		}
	}
}

dei uma travada aqui

import java.util.Scanner;

class triangulos_11004 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b, c, maior,ang;
		while (true) {
			a = scan.nextInt();
			b = scan.nextInt();
			c = scan.nextInt();

			if (a == 0 && b == 0 && c == 0)
				break;
			if ((a == b) && (b == c)) {
				System.out.println("a");

			}
			//retangulo
			maior = a;
			if ((maior * maior) == (b * b) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < b)
				maior = b;
			if ((maior * maior) == (a * a) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < c)
				maior = c;
			if ((maior * maior) == (b * b) + (a * a)) {
				System.out.println("r");
				break;
			}
			//angulos
			ang=((b*b) + (c*c) - (a*a))/2*b*c;
			if(ang>90||ang<180){
				System.out.println("o");
				break;
			}
			//nao é triangulo
			System.out.println("n");
		}
	}
}

vamos aos testes 1 2 1 era para ele dizer que nao da pra ser um retangulo ou seja… aparecer um “n”.
mas ele esta aparecendo um o de obtusangulo… e agora?

eu tinha esquecido do && ao inves de || para o primeiro teste… vlw pessoal!

import java.util.Scanner;

class triangulos_11004 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int a, b, c, maior, ang;
		while (true) {
			a = scan.nextInt();
			b = scan.nextInt();
			c = scan.nextInt();

			if (a == 0 && b == 0 && c == 0)
				break;
			if ((a == b) && (b == c)) {
				System.out.println("a");
				break;
			}
			// retangulo
			maior = a;
			if ((maior * maior) == (b * b) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < b)
				maior = b;
			if ((maior * maior) == (a * a) + (c * c)) {
				System.out.println("r");
				break;
			}
			if (maior < c)
				maior = c;
			if ((maior * maior) == (b * b) + (a * a)) {
				System.out.println("r");
				break;
			}
			// angulos
			ang = ((b * b) + (c * c) - (a * a)) / 2 * b * c;
			if (ang > 90 && ang < 180) {
				System.out.println("o");
				break;
			}
			// nao é triangulo
			System.out.println("n");
		}
	}
}