edutecnica

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.