string Marinaio::ottieniNome()
{
    return nome;
}

list<Marinaio> RegistroNavale::capitani()
{
    list<Marinaio> capitani;
    
    for(list<Nave>::const_iterator it_navi = navi.begin(); it_navi != navi.end(); it_navi++)
    {
        for(list<Marinaio>::const_iterator it_eq = it_navi->marinai().begin(); it_eq != it_navi->marinai().end(); it_eq++)
        {
            if(it_eq->ottieniGrado() == CAPITANO)
                // assumiamo che ogni marinaio sia registrato al piu' su una nave
                capitani.push_back(*it_eq);
        }
    }
    
    return capitani;
}

bool Nave::addMarinaio(Marinaio m)
{
    if(capienza >= equipaggio.size())
        return false;
        
    for(list<Marinaio>::const_iterator it_eq = equipaggio.begin(); it_eq != equipaggio.end(); it_eq++)
    {
        if(*it_eq == m)
            return false;
    }
    
    equipaggio.push_back(m);
    
    return true;    
}

