Triangolo isoscele JAVA

di il
6 risposte

Triangolo isoscele JAVA

Sto leggendo un codice in cui viene chiesto di verificare se si ha di fronte un triangolo isoscele tra le figure proposte, quindi vengono forniti in input dei dati relativi a dei vertici che qui ripropongo :

Triangolo: 1: 0,0 = 0,1 = 2,0
Rettangolo: 2: 10,10 = 10,20 = 20,20 = 20,10
Triangolo: 3: 0,5 = 0,6 = 7,0
Rettangolo: 4: 5,5 = 5,10 = 10,10 = 10,5
Rettangolo: 8: 2,2 = 5,5 = 6,4 = 3,1

Il codice realizzato è il seguente(dove v è una classe "Vertice" all'interno della quale vengono letti i vertici e calcolata la distanza) :

public boolean isoscele() { //è un triangolo avente due lati uguali, o equivalentemente due angoli uguali
		if(nome.equals("Triangolo")) { //nel triangolo abbiamo 3 vertici
			if(v.get(0).distanza(v.get(1)) == v.get(1).distanza(v.get(2)) && v.get(1).distanza(v.get(2)) != v.get(2).distanza(v.get(0)))
					return true;
			if(v.get(1).distanza(v.get(2)) == v.get(2).distanza(v.get(0)) && v.get(2).distanza(v.get(0)) != v.get(0).distanza(v.get(1)))
				return true;
			if(v.get(2).distanza(v.get(0)) == v.get(0).distanza(v.get(1)) && v.get(0).distanza(v.get(1)) != v.get(1).distanza(v.get(2)))
				return true;
		}
		return false;
	}
La domanda è la seguente : Quando fa tutti gli if nel codice suddetto, perchè ad esempio fa if(v.get(0).distanza(v.get(1)) == v.get(1).distanza(v.get(2)) e non semplciemente if(v.distanza(v.get(1)) == v.distanza(v.get(2)) ???
Cioè non capisco bene questi if, ho capito che fa la comparazione tra le lunghezze dei lati in modo da verificare che ne abbia esattamente due e sia isoscele, ma non ho ben capito la scrittura del codice in sè
Ad esempio : nel 1° if verifica che la distanza tra il vertice 0 e 1 = alla distanza tra il vertice 1 e 2 e che quest'ultima distanza sia diversa da quella tra i vertici 2 e 0 (iterando la stesso ragionamento per tutti e 3 i casi possibili?) ??

6 Risposte

  • Re: Triangolo isoscele JAVA

    1) Come si fa a darti indicazioni su un linguaggio orientato agli oggetti se non posti gli oggetti che chiami?
    2) evidentemente v non ha il metodo .distanza(), vorresti ottenere la distanza tra un punto e un insieme di punti? Si potrebbe anche definire ma che c'entra?
    3) Devi studiare come funziona un linguaggio orientato agli oggetti e non hai alternative a questo, altrimenti aprirai altri tremila thread e non riuscirai lo stesso a colmare le lacune
  • Re: Triangolo isoscele JAVA

    Anto11796 ha scritto:


    perchè ad esempio fa if(v.get(0).distanza(v.get(1)) == v.get(1).distanza(v.get(2)) e non semplciemente if(v.distanza(v.get(1)) == v.distanza(v.get(2)) ???
    Quel v è evidentemente una "lista" (es. ArrayList).
  • Re: Triangolo isoscele JAVA

    Sì, scusate non avevo ben visto nel codice che v fosse un ArrayList, ad ogni modo quel che volevo ben capire era se questo mio ragionamento era conforme al ragionamento utilizzato per la realizzazione di quel codice..(?)

    Anto11796 ha scritto:


    Ad esempio : nel 1° if verifica che la distanza tra il vertice 0 e 1 = alla distanza tra il vertice 1 e 2 e che quest'ultima distanza sia diversa da quella tra i vertici 2 e 0 (iterando la stesso ragionamento per tutti e 3 i casi possibili?) ??
  • Re: Triangolo isoscele JAVA

    Anto11796 ha scritto:


    Sì, scusate non avevo ben visto nel codice che v fosse un ArrayList, ad ogni modo quel che volevo ben capire era se questo mio ragionamento era conforme al ragionamento utilizzato per la realizzazione di quel codice..(?)

    Anto11796 ha scritto:


    Ad esempio : nel 1° if verifica che la distanza tra il vertice 0 e 1 = alla distanza tra il vertice 1 e 2 e che quest'ultima distanza sia diversa da quella tra i vertici 2 e 0 (iterando la stesso ragionamento per tutti e 3 i casi possibili?) ??
    Sì.

    Ad ogni modo il metodo è sbagliato concettualmente. Il triangolo equilatero è un triangolo isoscele
  • Re: Triangolo isoscele JAVA

    Anto11796 ha scritto:


    quel che volevo ben capire era se questo mio ragionamento era conforme al ragionamento utilizzato per la realizzazione di quel codice..(?)
    Questo sarebbe meglio per determinare se è isoscele (due lati di lunghezza uguale e il terzo di lunghezza diversa):
    double lato1 = v.get(0).distanza(v.get(1));
    double lato2 = v.get(1).distanza(v.get(2));
    double lato3 = v.get(2).distanza(v.get(0));
    
    return (lato1 == lato2 && lato2 != lato3)
        || (lato2 == lato3 && lato3 != lato1)
        || (lato3 == lato1 && lato1 != lato2);
  • Re: Triangolo isoscele JAVA

    Ok perfetto, sì il tuo codice andbin è sicuramente più chiaro e immediato!
Devi accedere o registrarti per scrivere nel forum
6 risposte