Situatie
Se considera o clasa de puncte din spatiu in care se descrie un punct de coordonate fixe M0(x0,y0,z0), reprezentand centrul unei sfere, raza fixa a unei sferei ro si un punct oarecare din spatiu M(x,y,z) si functiile:distanta(M0,M) care determina distanta dintre punctele M0 si M, pozitia_fata_de_centru(M), care determina coordonatele punctului M in raport cu centrul sferei si pozitia(M) care precizeaza pozitia punctului M fata de sfera. Sa se scrie un program care sa sa calculeze distanta dintre punctele M0 si M, coordonatele punctului M fata de centrul sferei si sa determine pozitia punctului M fata de sfera utilizandu-se obiecte din clasa declarata.
Solutie
#include<iostream.h>
#include<conio.h>
#include<math.h>
// definirea clasei clspunct
class clspunct
{
public:
static int x0,y0,z0,raza;
int x,y,z;
double distanta(void)
{
return(sqrt((x-x0)*(x-x0)+(y-y0)*
(y-y0)+(z-z0)*(z-z0)));
}
int poz_x_fata_m0(void)
{
return(x-x0);
}
int poz_y_fata_m0(void)
{
return(y-y0);
}
int poz_z_fata_m0(void)
{
return(z-z0);
}
double poz_m_fata_sfera(void)
{
return(distanta()-raza);
}
};
// initializare datelor statice inainte de
// declararea obiectelor clasei
int clspunct::x0=10;
int clspunct::y0=10;
int clspunct::z0=10;
int clspunct::raza=10;
void main(void)
{
// declararea obiectelor ob1 si ob2
clspunct a;
char r=’d’;
while(r==’d’)
{
cout<<“n sfera are la inceput raza “
<<a.raza<<” si centrul in M0(“
<<a.x0<<‘,'<<a.y0<<‘,'<<a.z0<<“)”;
cout<<“n coordonatele unui pct (int x,y,z):”;
cin>>a.x>>a.y>>a.z;
cout<<“n distanta(M0(“<<a.x0<<‘,'<<a.y0<<‘,’
<<a.z0<<“),M1(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“))=”<<a.distanta();
cout<<“n coordonatel lui M fata de centru(“
<<a.poz_x_fata_m0()<<‘,'<<a.poz_y_fata_m0()
<<‘,'<<a.poz_z_fata_m0()<<“)”;
if(a.poz_m_fata_sfera()>0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este exterior sferei”;
if(a.poz_m_fata_sfera()<0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este interior sferei”;
if(a.poz_m_fata_sfera()==0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este pe sfera”;
// se modifica datele statice
a.x0=1;a.y0=1;a.z0=1;a.raza=10;
cout<<“n sfera modificata are raza “<<a.raza
<<” si centrul in M0(“<<a.x0<<‘,'<<a.y0
<<‘,'<<a.z0<<“)”;
cout<<“n distanta(M0(“<<a.x0<<‘,'<<a.y0<<‘,’
<<a.z0<<“),M1(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“))=”<<a.distanta();
cout<<“n coordonatel lui M fata de centru(“
<<a.poz_x_fata_m0()<<‘,'<<a.poz_y_fata_m0()
<<‘,'<<a.poz_z_fata_m0()<<“)”;
if(a.poz_m_fata_sfera()>0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este exterior sferei”;
if(a.poz_m_fata_sfera()<0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este interior sferei”;
if(a.poz_m_fata_sfera()==0)
cout<<“n punctul M(“<<a.x<<‘,'<<a.y<<‘,’
<<a.z<<“) este pe sfera”;
cout<<“n continuati?(d/n):”;
cin>>r;
}
}
Leave A Comment?