繁体   English   中英

如何在C或C ++中比较数组上的内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM