I think the calculations are too complicated. Try this:
// Get the total months for full years worked
tm = (eyear - syear) * 12;
// Remove months not worked from the first year
tm -= (smnt - 1);
// Add months worked from the last year
tm += emnt;
cout << " years " << (tm / 12) << " months " << (tm % 12) << endl;
There are a number of ways to handle the odd months, the above assumes that the edge months are inclusive. So if the starting date was 1-31-2003 and the ending date was 12-1-2003, it would still come out to a full year of employment. To get more precise you would need to include days, or make an assumption about how many days are worked in those two months.