| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:00 01 字符串如何读取?
取消只看楼主 加入收藏
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
结帖率:95%
收藏
已结贴  问题点数:20 回复次数:6 
00 01 字符串如何读取?
我的一个文件中有00 01 10 11四种字符串,请问如何统计它们各自所占的比例?
这里的关键问题是00 01的处理。
非常感谢!
搜索更多相关主题的帖子: 字符串 如何 
2013-03-06 23:46
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 2楼 pauljames
我表达的不够仔细,其实我的实际情况是这样的:
11 11 10 10
11 11 10 10
11 11 10 10
11 01 00 10
11 01 00 10
11 01 00 10
11 01 00 00
.. .. .. ..
有1千万行这样的数据,需要统计4种字符串(即00,01,10,11)在每行中所占的比例?
答案就5种,0%,25%,50%,75%或100%。

非计算机专业自学新手向大家请教
2013-03-07 09:46
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 5楼 wp231957
文件上百M,不好发。文件中情况更复杂,第一列为浮点型,第2列为整形,然后才是这四种字符串
比如
0.2 0 11 11 10 10
0.2 0 11 11 10 10
0.3 1 11 11 10 10
0.2 0 11 01 00 10
0.4 1 11 01 00 10
0.2 0 11 01 00 10
0.2 0 11 01 00 00
实际中我需要根据前两列情况,来判断是否需要对后面的字符串统计,比如只有在第二列等于1时才统计。
所以变得更复杂了,我实在不知该怎么办?
热切希望高手帮忙!

非计算机专业自学新手向大家请教
2013-03-07 10:22
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 7楼 wp231957
求详细解释,没听过vfp

非计算机专业自学新手向大家请教
2013-03-07 10:53
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
只有当第2列为1时,我才统计4种字符串比例,因此结果如下:
第3行,11和10各占50%,00和01占0%
第5行,11,10,00和01各占25%

非计算机专业自学新手向大家请教
2013-03-07 11:19
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
问题解决了,基本思路为:
1.读取文本数据到数组
程序代码:
int i=0, N_Number=0;    

    double c, Cca[Dim];
    int NOpen[Dim], iN;
    char c0[Dim][2], c1[Dim][2], c2[Dim][2], c3[Dim][2], b0[2], b1[2], b2[2], b3[2];

    while( fscanf(fp, "%lf %d %s %s %s %s\n", &c, &iN, b0, b1, b2, b3)!=EOF )
    {
        Cca[i] = c;
        NOpen[i]  = iN;
        strcpy(c0[i], b0);
        strcpy(c1[i], b1);
        strcpy(c2[i], b2);
        strcpy(c3[i], b3);
        i++;
        N_Number++;
    }
2.挑选需统计行到新文本(注意字符串的输出改为整形)
程序代码:
while (i<N_Number)
    {
        if ( (NOpen[i]==0) && (NOpen[i+1]>0) )
        {
            fprintf(pn, "%lf %d %c%c %c%c %c%c %c%c\n", Cca[i], NOpen[i], c0[i][0],c0[i][1], c1[i][0],c1[i][1],c2[i][0],c2[i][1],c3[i][0],c3[i][1]);
        }
        i++;
    }
3.字符统计
程序代码:
for (i=0; i<N_Number; i++)
    {
        if( (c0[i][0]=='0')&&(c0[i][1]=='0') ) a00++;
        if( (c0[i][0]=='0')&&(c0[i][1]=='1') ) a01++;
        if( (c0[i][0]=='1')&&(c0[i][1]=='0') ) a10++;
        if( (c0[i][0]=='1')&&(c0[i][1]=='1') ) a11++;
       

        if( (c1[i][0]=='0')&&(c1[i][1]=='0') ) a00++;
        if( (c1[i][0]=='0')&&(c1[i][1]=='1') ) a01++;
        if( (c1[i][0]=='1')&&(c1[i][1]=='0') ) a10++;
        if( (c1[i][0]=='1')&&(c1[i][1]=='1') ) a11++;
       

        if( (c2[i][0]=='0')&&(c2[i][1]=='0') ) a00++;
        if( (c2[i][0]=='0')&&(c2[i][1]=='1') ) a01++;
        if( (c2[i][0]=='1')&&(c2[i][1]=='0') ) a10++;
        if( (c2[i][0]=='1')&&(c2[i][1]=='1') ) a11++;
       

        if( (c3[i][0]=='0')&&(c3[i][1]=='0') ) a00++;
        if( (c3[i][0]=='0')&&(c3[i][1]=='1') ) a01++;
        if( (c3[i][0]=='1')&&(c3[i][1]=='0') ) a10++;
        if( (c3[i][0]=='1')&&(c3[i][1]=='1') ) a11++;       

       

        fprintf(pn, "%lf %lf %lf %lf\n", a00/(double)4, a01/(double)4, a10/(double)4, a11/(double)4);
        a00=0, a01=0, a10=0, a11=0;
    }


非计算机专业自学新手向大家请教
2013-03-08 18:48
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
方法可能比较笨拙,希望能给需要的人提供帮助。
若有好建议,可继续指点,谢谢

非计算机专业自学新手向大家请教
2013-03-08 18:50
快速回复:00 01 字符串如何读取?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017939 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved