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:
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: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 }
Qualcuno sa come si possa fare perchè max non resti uguale a zero?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; */ }
Grazie...![]()
![]()
![]()

Rispondi quotando



