Esercizio 3
Scrivere un programma che dato in input base altezza di un triangolo rettangolo passi tali valori ad una funzione attraverso la quale si possano stabilire ipotenusa, area e perimetro del triangolo.
#include<iostream>
#include<math.h>
using namespace std;
void fun(float b, float h,float &i,float &p, float &a); main(){
float base,altezza;
float area=0,ipotenusa=0,perimetro=0;
cout <<" base:";cin >> base;
cout << "altezza:";cin >> altezza; fun(base,altezza,ipotenusa,perimetro,area);
cout << ipotenusa << " " << perimetro << " " << area;
}//fine main
void fun(float b, float h,float &i,float &p, float &a){ i=sqrt(b*b+h*h);
p=a+h+i;
a=b*h/2;
}//fine fun
E' necessario l'uso della libreria math.h data la presenza della funzione
matematica sqrt( ) per il calcolo della radice quadrata.
Si nota come le due variabili 'base' e 'altezza' siano passate per valore,
mentre le variabili 'ipotenusa', 'perimetro'
e 'area' sono passate per indirizzo.
La funzione fun è di tipo void, per cui non restituisce
nessun tipo di dato al main( ) ma avendo ricevuto
gli indirizzi di memoria delle tre variabili suddette può direttamente operare
sul loro contenuto e cambiarlo.
Ricevendo &i la funzione riceve l'indirizzo della
cella di memoria della variabile 'ipotenusa' del
main( ) con la variabile locale a fun(
) 'i' si fa riferimento al contenuto della
cella di memoria di 'ipotenusa'.
Se non avessimo potuto usare il passaggio per indirizzo con la funzione
void, avremmo dovuto scrivere tre funzioni: una per il calcolo dell'ipotenusa,
una che restituisse i perimetro e una che restituisse l'area chiamandole
in successione.