#include <iostream>
#include <cmath>

using std::cout;
using std::endl;


/* first pass: edit amounts by hand */
/* second pass: write functions to do it (hide information, algorithms) */
/* third pass: objects -- why objects ? */

struct bank_account1 {
	long int number;
	char name[20];
	double balance;
};


double get_balance( struct bank_account2& );
void set_balance( struct bank_account2& , double amt );
void deposit( struct bank_account2& , double amt );

struct bank_account2 {
	long int number;
	char name[20];
	int dollars;
	short int cents;
};

int main()
{
	bank_account2 acct;
	
	acct.number = 12345;
	strcpy(acct.name,"Bob Smith");
	set_balance( acct , 104.1234 );

	cout << get_balance( acct ) << endl;

	deposit( acct , 10.0 );
	
	cout << get_balance( acct ) << endl;

	return 0;
}

double get_balance( struct bank_account2& acct )
{
	return ((double)acct.cents  / 100.0 + (double)acct.dollars);
}

void set_balance( struct bank_account2& acct , double amt )
{
	int dollars = floor( amt );
	double dblcents = amt - dollars;
	int cents = (int)floor(100 * dblcents);
	acct.dollars = dollars;
	acct.cents = cents;
}

void deposit( struct bank_account2& acct , double amt )
{
	set_balance( acct , get_balance( acct ) + amt );
}

