[英]how can I compare the contents on an array in C or c++
基本上,我正在寻找一种将数组内容( 例如短语 )设置为要比较的单个单词的方法。 因此,当用户输入数据时,我可以告诉他们有多少相同长度的单词。
void main(){
char array[30];
int length, cont, array_tokens;
printf("enter a phrase: ");
scanf("%[^\n]s", array); //or gets(array); which ever one you like
/*-------------------------
*******magic happens*******
---------------------------*/
for(int i=0; i<wordcount;i++)
printf("%d word(s) with %d letters was entered", array_tokens, cont);//some sort of
system("pause"); //counter which came
} //with the magic that
//happened before
所以结果应该是:
输入词组: 用户输入的词组相似的长义词
输入了1个单词(含1个字母)
输入了2个单词(带4个字母)
输入了5个字母的1个单词
输入了3个单词,共6个字母
输入了1个单词(带7个字母)
好吧,strtok()是解决此问题的一种方法。 如果您想提高效率(应该),则应编写一个循环遍历句子中字母的循环。 计算自上一个空格以来遇到的非空格字符的数量,并在每次获得空格时更新n字母-word-frequency数组。 我可以编写代码来做到这一点,但是当您自己编写代码时,我不想剥夺您的满足感。 :P
您需要通过delimiter
(在此示例中为空格char'')将句子拆分为tokens
(在本示例中为单个单词)。 有多种方法可以做到这一点。 好的老式C语言方法是使用C语言标准库提供的Robert Harvey建议的strtok
。 它通过传入要分割的字符串,然后是分割字符串的定界符来工作。
然后,要计算相似长度的单词,请尝试针对不同的单词长度使用整数变量(或更简单地说,是在一种频率数组中,每个索引代表该长度的单词,其值表示它们的出现次数),循环遍历所有单词标记,遇到一个长度为一个单词的单词时,将增加相应的变量。 要获取C样式字符串的长度,请尝试strlen
。
您可以拥有一个数组计数 ,其中count [i]是长度为i的单词数。
Set count to 0
Set t to 0
for(int i=0;i<given_phrase.length();i++)
{
if(given_phrase[i]==' ')
{
count[t]++;
t=0;
}
else
{
t++;
}
}
对于C,只需在词尾检查“ \\ 0”即可。 然后,您可以基于计数显示结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.