Amazon Interview Question
Java DevelopersCountry: United States
Interview Type: Phone Interview
class TMovie
{
public:
enum eType { e2D = 0, e3D = 30, e4D = 50 };
eType m_type;
TMovie( eType type )
{
m_type = type;
}
};
class TTicket
{
public:
enum eAge { adult = 0, kid = 50, senior = 30 };
eAge m_ageDiscount;
TTicket( eAge age )
{
m_ageDiscount = age;
};
};
class TPurchase
{
public:
static float m_SinglePrice;
TMovie * m_movie;
std::vector<TTicket *> m_basket;
int m_dayOfWeek;
int GetCurrentDayOfWeek()
{
return 3;
}
void Add( TTicket::eAge age, size_t num )
{
for( size_t i = 0; i < num; i++ )
{
m_basket.push_back( new TTicket( age ) );
}
}
TPurchase( TMovie::eType type )
{
m_dayOfWeek = GetCurrentDayOfWeek();
m_movie = new TMovie( type );
};
~TPurchase()
{
for( size_t i = 0; i < m_basket.size(); i++ )
{
delete m_basket[i];
}
}
float GetTotalPrice()
{
float price = 0.0;
for( size_t i = 0; i < m_basket.size(); i++ )
{
float ageDiscount = m_basket[i]->m_ageDiscount * m_SinglePrice / 100;
float dayDiscount = ( 2 == GetCurrentDayOfWeek() ? 50 : 0 ) * m_SinglePrice / 100;
float movieDiscount = m_movie->m_type * m_SinglePrice / 100;
price += m_SinglePrice - ( dayDiscount > 0 ? dayDiscount : ageDiscount ) - movieDiscount;
}
return price;
}
};
float TPurchase::m_SinglePrice = 10.0;
void testAmazon13878774()
{
TPurchase tickets( TMovie::e2D );
tickets.Add( TTicket::eAge::adult, 2 );
tickets.Add( TTicket::eAge::kid, 3 );
tickets.Add( TTicket::eAge::senior, 1 );
cout << " Totoal price: " << tickets.GetTotalPrice() << endl;
}
sorry. Did not realized it should be for Java. Also movieDiscount should be summed
- LBaralgeen June 11, 2012