您的位置:程序门 -> c/c++ ->



c程序


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c程序
发表于:2007-05-05 11:18:34 楼主
给定一个文件,该文件中存放了大量英文词组,文件的每一行存放一个词组,比如:
hello   world
short   message   service
short   message
you   are   a   dog

词组中每个单词的首字母按单词的先后次序排列在一起我们定义为词组的缩写。比如hello   world的缩写为hw,short   message的缩写为sm。如果一个字符串和词组的缩写相同,或者和该词组缩写的起始部分相同,则称该词组与字符串匹配。比如you   are   a   dog与y、ya、yaa、yaad都是匹配的。

用c语言实现一程序,用户输入一字符串,程序输出文件中所有与该字符串匹配的词组,词组须按字符串的大小由小到大排列显示。
输入:字符串
输出:词组列表

例:
输入:sm
输出:short   message
            short   message   service
发表于:2007-05-05 13:18:341楼 得分:0
定义一个struct   :

typedef   struct{
        char   whole[1024];   //存放整个词组
        char   short[100];     //存放缩写
}meta;
meta   library[10000];

然后就把所有的词读进来,然后每次for一遍,把缩写相同的找出来输出whole串就可以了。
如果要更加高效,可以用stl的multiset来完成。
发表于:2007-05-06 01:44:132楼 得分:0
//睡不着,瞎敲的
void   printfmatchingstring(   const   char   *str   )
{
        file   *fp;
        char   *tempstr   =   str;
        char   line[100];
        char   pline;
       
        if(   str   ==   null   )
                return;
               
        if(   (   fp   =   fopen(   "file.txt ",   r   )   )   ==   null   )
                return;
           
        while(   !feof(fp)   )
        {
                memset(   line,   0,   100   );
                fgets(   line,   100,   fp   );
                pline   =   line;
                while(   *tempstr   !=   '\0 '   )
                {
                        if(   *tempstr   !=   *pline   )break;
                        while(   *pline++   !=   '   '   &&   *pline   !=   '\0 '     );
                        if(   pline   ==   '\0 '   )
                                break;
                        pline++;
                        tempstr++;
                }
                if(   *tempstr   ==   '\0 '   )
                        printf(   "%s\n ",   line   );
                tempstr   =   str;
        }
       
        fclose(fp);
       
        return;
}
发表于:2007-05-06 08:01:293楼 得分:0
1、     getline   然后缓存,
2、     进行排序
3、     用户输入查找缩写,根据缩写进行查找缓存,   输出结果
发表于:2007-05-06 15:04:334楼 得分:0
看了半天,没有搞懂,能看懂什么意思,
就是不知道怎么写,
应该要用数组吧!
如果有vf的唯一索引就好了。


快速检索

最新资讯
热门点击