我尝试解决问题但无法找到解决方案。问题在于文本中词汇的词典排序,以及显示每个词的出现频率。我成功地安排了这些话,而且我对这个练习的第二部分没有任何想法。这是我的代码:
void lexigografic(char *s)
{
char *p, cuv[20][20], aux[20];
int i=0, n, j;
p=strtok(s, " ");
while(p)
{
i++;
strcpy(cuv[i], p);
p=strtok(NULL, " ");
}
n=i;
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
if(strcmp(cuv[i], cuv[j])>0)
{
strcpy(aux, cuv[i]);
strcpy(cuv[i], cuv[j]);
strcpy(cuv[j], aux);
}
for(i=1; i<=n; i++)
{
if(cuv[i] == cuv[j] )
fout<<cuv[i]<<"***";
fout<<endl;
}
}
答案 0 :(得分:1)
只需使用std::map
即可。它会保持按键排序。这是一段代码:
std::map<std::string, int> m; // definition of map
std::string = "word"; // sample word
m[s] += 1; // increments word count of string; inserts it if it doesn't exist.