Programare orientata pe obiecte

Configurare noua (How To)

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;

 }

}

Tip solutie

Permanent

Voteaza

(3 din 12 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?