Índice del diccionarioc

El cartel original solicitó usar C, que es más problemático. Sería mucho más conveniente si usaras C++. No tengo nada que hacer, así que lo anoté y eché un vistazo.

# incluir & ltiostream & gt

# incluir & ltmap& gt

# incluir & ltlist& gt

# incluir & ltString& gt

Usar espacio de nombres estándar

Estructurar información de nacimiento

{

int mes;

int día;

Información de nacimiento ()

{

mes = 0;

día = 0;

}

Operador booleano = = (información constante de nacimiento y derechos) constante

{

if(mes = = RHS . mes y & día == día relativo)

{

Devuelve verdadero

}

Devuelve falso

}

Operador booleano & lt(const información de nacimiento y amprhs) constante

{

if (mes<rhs.mes)

{

Devuelve verdadero

}

else if (mes == rhs.month)

{

if(día & lt; rhs. day)

{

Devuelve verdadero

}

}

Devuelve falso

}

};

Estructura SameBirthInfo

{

int nCount

Lista<String>StrNoList

SameBirthInfo( )

{

nCount = 0;

}

};

mapeo de typedef & ltBirthInfo, SameBirthInfo & gt resultado;

int main()

{

int nStudentCount = 0;

String strNo =

BirthInfo BirInfo

Resultado del resultado;

misma información de nacimiento misma información de nacimiento;

CIN>>nStudentCount

mientras(nStudentCount-> ;0)

{

CIN>>strNo & gt& gtBirInfo.month & gt& gtBirInfo.day

resultado::iterador ITER = resultado buscar(BirInfo) ;

if ( iter == resultado.end())

{

//No encontrado

par & ltresult:: iterador, bool & gtpins ret = Resultado insert(Resultado::valor _ tipo(BirInfo, misma información de nacimiento));

if (pInsRet.segundo)

{

pins ret. primero-> segundo. //Registra que hay una persona en este cumpleaños.

pins ret.primero->Segundo.

lista de cadenas push_back(strNo);? //Registra el número de estudiante de esta persona.

}

}

Otros

{

//Buscar

ITER ->segundo .ncount++;//El mismo número de personas en Amanome++

ITER->Segundo. strnolist . push _ back(strNo); //Guarda el número de estudiante.

}

}

// Generar todos los resultados

resultado::const _ iterator cIter = result . /p>

while ( cIter! = result.end()

{

//Primero genera el cumpleaños

cout & lt& ltcIter-> ; first.month & lt& lt" " " & lt& ltcIter->; first.day

//Muestra todos los números de estudiantes.

List & ltString& gt* const _ iterator cStrIter = cIter-& gt; segundo. strnolist.begin();

mientras (cStrIter! = cIter->; segundo. StrNoList.end())

{

cout & lt& lt" " " & lt& ltcStrIter-& gt; c _ str();

++ cStrIter;

}

cout & lt& ltendl

++ cIter;

}

Devuelve 0;

}