zdar lidi,
mam zas takovej přihlouplej problém a tak se s důvěrou obracím na vás :)
Je to prostý, mam následující kód:
Soubor 1:
#ifndef _STONEWT_H_
#define _STONEWT_H_
class Stonewt
{
private:
enum {Lbs_per_stn = 14};
int stone;
double pds_left;
double pounds;
public:
operator double();
Stonewt(double lbs);
Stonewt(int stn, double lbs, char mode = 'L');
Stonewt();
~Stonewt();
friend ostream & operator<<(ostream & os, const Stonewt & p);
void show_lbs() const;
void show_stn() const;
};
#endif
Soubor 2:
#include <iostream>
using namespace std;
#include "stonewt.h"
Stonewt::operator double()
{
return pounds;
}
Stonewt::Stonewt(int stn, double lbs, char mode)
{
stone = stn;
pds_left = lbs;
if(mode=='L')
{
pounds = stn * Lbs_per_stn + lbs;
}
else if(mode=='S')
{
pounds = stn + (lbs / Lbs_per_stn);
}
else if(mode=='P')
{
double pounds = (stn * Lbs_per_stn + lbs);
}
}
Stonewt::Stonewt()
{
stone = 0;
pounds = pds_left = 0;
}
Stonewt::~Stonewt()
{
}
ostream & operator<<(ostream & os, const Stonewt & p)
{
os << p.pounds;
}
Soubor 3:
#include <iostream>
#include <iomanip>
using namespace std;
#include "stonewt.h"
int main()
{
Stonewt taft(21, 8, 'L');
Stonewt wolfe(25, 9, 'S');
Stonewt pavarotti(30, 8, 'P');
cout<<"Vaha v librach zaokrouhlenych na cela cisla: ";
cout<<taft;
cout<<"\nVaha v stones: ";
cout<<wolfe;
cout<<"\nVaha v librach s desetinnou carkou: ";
cout<<pavarotti;
cin.get();
return 0;
}
Na a ja jen chci, aby to cout<<pavarotti; vypsalo to číslo třeba se 4 desetinejma místama, ale ono to píše v tom zkurvenym tvaru s exponenciálama - 7.33061e+268. Když ten poslední řádek upravím takto:
cout.setf(ios::fixed, ios::floatfield);
cout<<setprecision(4)<<pavarotti;
Tak to bohužel nefunguje, compilátor neháže žádnou chybu, ale program pak spadne :(
Jo, samozřejme tam mam i #include <iomanip> když sem tam dal to setprecision(4).
Díky moc za pomoc ;)