// Calcolo dell'angolo e della distanza tra due vettori // Si utilizzano funzioni e variabili locali #include #include #include using namespace std; // Funzione Prodotto Scalare double Scalare(double x[], double y[], int dim) { double S = 0.; for (int i = 0; i < dim; i++) S += x[i]*y[i]; return S; } // Funzione Distanza double Distanza(double x[], double y[], int dim) { double D, z[100]; // Dim < 100 for (int i = 0; i < dim; i++) z[i] = x[i] - y[i]; D = sqrt( Scalare(z,z,dim) ); // Dist(x,y) = Norma(x-y) return D; } // Funzione Main int main(){ double a[3], b[3]; double ab, na, nb; double ang, dist; fstream f; f.open("vettori.dat",ios::in); if ( f.fail() ){ cout << "Errore nell'apertura di 'vettori.dat' ==> Esco" << endl; return -1; } f >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2]; while( ! f.eof() ){ cout << "A B" << endl; cout << "-------" << endl; for ( int i = 0; i < 3; i++ ) cout << a[i] << " " << b[i] << endl; ab = Scalare(a,b,3); na = sqrt( Scalare(a,a,3) ); nb = sqrt( Scalare(b,b,3) ); ang = acos( ab/(na*nb) ); dist = Distanza(a,b,3); cout << "Angolo = " << ang << endl; cout << "Distanza = " << dist << endl; cout << "-----------" << endl; f >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2]; } f.clear(); f.close(); return 0; }