Help

SparkyCH's Avatar, Join Date: Oct 2006
Go4Expert Member
What i have here is a currency class which is a sub class. I have hit a wall and do not know how to do the following empty functions and constructors. Please help. thanks

Code:
Currency::Currency():_dollars(0),_cents(0){}

Currency::Currency(const Currency& curr)
{
	
	_dollars = curr._dollars;
	_cents = curr._cents;

}

Currency::Currency(int dollars, int cents):_dollars(dollars),_cents(cents){}

Currency::Currency(float curr)
{
	
	
	
}

Currency::Currency(const string& curr)
{
	
	
	
}

int Currency::getDollars() const
{
	
	return _dollars;	
	
}

int Currency::getCents() const
{
	
	return _cents;	
	
}

void Currency::setDollars(int dollars)
{
	
	this->_dollars = dollars;	
	
}

void Currency::setCents(int cents)
{
	
	this->_cents = cents;	
	
}
// This function converts the internal currency representation to a floating point number
float Currency::toFloat() const
{
	
	
	
	return 0;
}

string Currency::toString() const
{
	
	Currency curr;
	string returning_string;
	string assignStringDollars, assignStringCents ;
	ostringstream dollarStream, centStream;

	dollarStream << curr.getDollars();
	centStream << curr.getCents();

	assignStringDollars = dollarStream.str();
	assignStringCents = centStream.str();

	returning_string = assignStringDollars + "." + assignStringCents;

	return returning_string;	
	

}
//This function converts a floating point number to the internal representation of the currency class
void Currency::fromFloat(float curr)
{
	
	
	
}

int Currency::fromString(const string& curr)
{
	Tokeniser tok(curr, ".");
	char *garbage;

	_dollars = strtol(tok.nextToken().c_str(), &garbage, 10);
	if (garbage != NULL && strlen(garbage) > 0)
	{
		return -1;
	}

	_cents = strtol(tok.nextToken().c_str(), &garbage, 10);
	if (garbage != NULL && strlen(garbage) > 0)
	{
		return -1;
	}

	return 0;
}

Currency& Currency::operator =(const Currency& obj)
{
	if (*this != obj)
	{
		_dollars = obj.getDollars();
		_cents = obj.getCents();
	}
	
	return *this;
}

bool Currency::operator <(const Currency& obj) const
{
	if (_dollars < obj.getDollars())
	{
		return true;
	}
	if (_dollars > obj.getDollars())
	{
		return false;
	}
	if (_cents < obj.getCents())
	{
		return true;
	}

    return false;
}

bool Currency::operator ==(const Currency& obj) const
{
	if (_dollars == obj.getDollars() && _cents == obj.getCents())
	{
		return true;
	}

	return false;
}

bool Currency::operator !=(const Currency& obj) const
{
	return !(*this == obj);
}

ostream& operator <<(ostream& out, const Currency& obj)
{
	out << obj.getDollars() << "." << obj.getCents();
	return out;	
	
}
0
SparkyCH's Avatar, Join Date: Oct 2006
Go4Expert Member
I got the first two but no clue about the toflaot and fromfloat please help
Code:
Currency::Currency(float curr)
{
	
	_dollars = (int)curr;  
	_cents = (int)((curr - _dollars) * 100); 	
	
}

Currency::Currency(const string& curr)
{
	
	 double f = atof(curr.c_str());
	_dollars = (int)f;
	_cents = (int)((f - _dollars) * 100);
}