當前位置:成語大全網 - 書法字典 - 字典編程主題

字典編程主題

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

# include & ltiostream & gt

# include & lt地圖& gt

# include & lt列表& gt

# include & lt字符串& gt

使用命名空間std

結構出生信息

{

int月;

int day

出生信息()

{

月份= 0;

day = 0;

}

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

{

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

{

返回true

}

返回false

}

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

{

if(月份& ltrhs .月)

{

返回true

}

else if(month = = RHS . month)

{

if(day & lt;rhs.day)

{

返回true

}

}

返回false

}

};

結構SameBirthInfo

{

int nCount

列表& lt字符串& gtStrNoList

SameBirthInfo()

{

nCount = 0;

}

};

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

int main()

{

int nstudent count = 0;

string 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(pins ret . 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-& gt;第壹個月<& lt“““& lt& ltcIter-& gt;第壹天;

//輸出所有學生證號。

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

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

{

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

++ cStrIter;

}

cout & lt& ltendl

++ cIter;

}

返回0;

}