Not sure if this is the only problem, but I believe you want /*Line 108*/ while((player.hp > 0) && (monster.hp > 0)).
Having it only be OR will make it still continue if player.hp is positive and monster.hp is negative, or vice-versa. Using the debugger or having cout statements inside the while loop helps.
Thanks Gonado! I don't know how I didn't realize this but I used the wrong logic for that but not anything else, I've been trying to fix this for a week and I looked right at the problem a million times, just passing it over!