problem z zadaniem (konstruktor)

0

Witam wszystkich mam o to taki problem na zadanie z programowania musimy napisać program na klasach z zdefiniowanymi konstruktorami i destruktorami w którym mamy przeliczać wartość
np. z Pascala na
milimetry słupa rtęci (x0.0075006)
atmosfery fizyczna (x
0.0000099)
atmosfery techniczna (x*0.0000102)
tego oczywiście jest dalej cała masa ale chodzi mi tylko o sam przykład że by potem wiedzieć w która stronę się kierować.

#include <iostream>
using namespace std;


class CPascal
      {
       private:
       double pas;
       public:
       CPascal ()
       {
        cout<<" Konstruktor zostal wywolany \n\n";
       }
       
       ~CPascal()
       {
       cout<<" Destruktor wykonal zwoje zadanie \n";
       }
       double sluprteci();
      };

int main()
    {
     double wynik;
     CPascal* obliczenie1 = new CPascal;
     wynik=obliczenie1->sluprteci();
     cout<<"Wynik to: "<<wynik<<"mmHG"<<endl;
     delete obliczenie1;
     cout<<"\n\n\n";
     system("PAUSE");
     return 0;
    }
    
double CPascal::sluprteci()
{
cout<<"Podaj wartosc Pascali:   "; cin>>pas;
pas=pas*0.0075006;
return pas;
}

I tutaj jest moje pytanie czy mogę to jakoś inaczej zapisać z wykorzystaniem właśnie konstruktora czy też destruktora w jakiś znaczący sposób nie wiem załóżmy jakieś obliczenia w nim wykonać. Potem zresztą i tak to wszystko powrzucam do case, menu wyboru itp.
ps: I jeszcze jedno pytanie czy da się jakoś obliczyć wartość atmosfery fizycznej tak ze by mi w wyniku nie wychodziły e+ i tam reszta wyniku tylko poprawna wartość ? ( z tego co pamiętam double ma możliwość operowania na liczbach 15 miejsc po przecinku tak ze nie wiem w czym tkwi problem.

Z góry dzięki za pomoc.

0

mozesz przeciazyć konstruktor:

CPascal(double pascal)
{
pas=pascal*0.0075006;
}
double sluprteci(){return pas;}
0

no tak zgodnie z tym co napisałeś gdy wpisze:

#include <iostream>
using namespace std;


class CPascal
      {
       private:
       double pas;
       public:
       CPascal (double pascall=1) <--// w zależności od wpisanej tutaj liczby będzie mi mnożyła 
       {                           // przez wzór znajdujący się niżej teraz moje kolejne pytanie 
                                   // czy da się przypisać tutaj jakąś zmienna i potem ja wywołać
        pas=pascall*0.0075006;    // w jakimś pytaniu?
        cout<<" Konstruktor zostal wywolany \n\n";
       }
       
       ~CPascal()
       {
       cout<<" Destruktor wykonal zwoje zadanie \n";
       }
       double sluprteci();
      };

int main()
    {
     double wynik;
     CPascal* obliczenie1 = new CPascal;
     wynik=obliczenie1->sluprteci();
     cout<<"Wynik to: "<<wynik<<"mmHG"<<endl;
     delete obliczenie1;
     cout<<"\n\n\n";
     system("PAUSE");
     return 0;
    }
    
double CPascal::sluprteci()
{
//cout<<"Podaj wartosc Pascali:   "; cin>>pas;
//pas=pas*0.0075006;
return pas;
}
0

Widzę, że próbujesz na siłę wykorzystać do czegoś klasę. Ale tworzyć klasę tylko po to oby przemnożyć jakąś liczbę przez stałą to bezsens. Może coś takiego bardziej:

class CCisnienie
{
private:
   double pas;
public:
   CCisnienie (double pascall=1)
   {
      pas = pascall;
      cout<<" Konstruktor zostal wywolany \n\n";
   }

   ~CCisnienie()
   {
      cout<<" Destruktor wykonal zwoje zadanie \n";
   }
   
   double GetMMHg() { return pas * 0.0075006; }
   double GetPas() { return pas; }
   void SetMMHg(double value) { pas = value * (1/0.0075006); }
   void SetPas(double value) { pas = value; }
};

int main()
{
   CCisnienie cisnienie;
   cisnienie.SetPas(10);
   cout << cisnienie.GetPas() << " Pas to " << cisnienie.GetMMHg() << " mmHg\n\n\n";
   system("PAUSE");
   return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1