Ciao, da un pò di tempo ho un piccolo problemino che non riesco a risolvere. Ad es. ho tre lati di un triangolo e devo determinare qual'è il più grande e faccio:
codice:
1 double x,y,z,max;
2 main{
3 if(x>y && x>z)double max=x;
4 if(y>x && y>z)double max=y;
5 if(z>x && z>y)double max=z;
6 cout << max;
7 }
solo che max resta sempre uguale a zero. Tempo fa avevo trovato un espediente aggiungevo dopo la quinta linea double max=max; e tutto procedeva bene (perchè non lo so). Ora, avendo fatto una classe triangolo quando vado a definire una funzione dove utilizzo il codice sopra per determinare il lato maggiore non posso utilizzare l'espediente di prima perchè me lo considera come doppia dichiarazione di una variabile. Questa è la funzione:
codice:
long double triangolo::area2(long double lato1,long double lato2,long double lato3){
long double max,ret0=0,ret=-1,ret2=-2;
if(lato1>lato2 && lato1>lato3)long double max=lato1;
if(lato2>lato1 && lato2>lato3)long double max=lato2;
if(lato3>lato1 && lato3>lato2)long double max=lato3;
long double condizione = (lato1+lato2+lato3) - (2*max);
if (condizione == 0){return ret0;}
if (condizione > 0){
long double pr=(lato1+lato2+lato3)/2;
long double a2=sqrt(pr*(pr-lato1)*(pr-lato2)*(pr-lato3));
return a2;
}
if (condizione < 0){return ret;}
else {return ret2;}
/* ***CODICI DI ERRORE***
Quando la funzione area2 assume i seguenti valori: 0 e -1 significa che i dati inseriti non consentono
di disegnare graficamente il triangolo, quindi il triangolo stesso non può esistere.
ret0=0 : significa che la somma dei lati minori è uguale al lato maggiore, quindi l'area
è uguale a zero;
ret=-1 : significa che la somma dei lati minori è più piccola del lato maggiore, quindi
il triangolo non può esistere;
ret2=-2 : errore imprevisto;
*/
}
Qualcuno sa come si possa fare perchè max non resti uguale a zero?
Grazie...