當前位置:成語大全網 - 書法字典 - 詞典索引c

詞典索引c

樓主要求用C,比較麻煩。如果用C++就方便多了。我沒事做,就寫下來看看。

# include & ltiostream & gt

# include & lt地圖& gt

# include & lt列表& gt

# include & lt字符串& gt

使用命名空間std

結構出生信息

{

int月;

int日;

出生信息()

{

月= 0;

日= 0;

}

布爾運算符= =(const birth info & amp;rhs)常數

{

if(month = = RHS . month & amp;& amp日==相對日)

{

返回true

}

返回false

}

布爾運算符& lt(const出生信息& amprhs)常數

{

如果(月& ltrhs .月)

{

返回true

}

else if ( month == rhs.month)

{

if(day & lt;rhs .日)

{

返回true

}

}

返回false

}

};

結構SameBirthInfo

{

int nCount

列表& lt字符串& gtStrNoList

SameBirthInfo()

{

nCount = 0;

}

};

typedef映射& ltBirthInfo,SameBirthInfo & gt結果;

int main()

{

int nStudentCount = 0;

字符串strNo =

BirthInfo BirInfo

結果結果;

same birth info same birth info;

CIN & gt;& gtnStudentCount

while(nStudentCount-& gt;0 )

{

CIN & gt;& gtstrNo & gt& gtBirInfo.month & gt& gtBirInfo.day

result::iterator ITER = result . find(BirInfo);

if ( iter == result.end())

{

//找不到

pair & lt結果::叠代器,bool & gtpins ret = Result . insert(Result::value _ type(BirInfo,same birth info));

if ( pInsRet.second)

{

pins ret . first-& gt;second . ncount = 1;?//記錄這個生日有壹個人。

pins ret . first-& gt;第二。strnolist . push _ back(strNo);?//記錄下這個人的學號。

}

}

其他

{

//查找

ITER-& gt;second . ncount++;//Amanome ++中的人數相同

ITER-& gt;第二。strnolist . push _ back(strNo);//保存該學生的學號。

}

}

//輸出所有結果

result::const _ iterator cIter = result . begin();

while ( cIter!= result.end()

{

//首先輸出生日

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

//輸出所有學號。

列表& lt字符串& gt* const _ iterator cStrIter = cIter-& gt;第二。strnolist . begin();

while ( cStrIter!= cIter->;第二。StrNoList.end())

{

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

++ cStrIter;

}

cout & lt& ltendl

++ cIter;

}

返回0;

}