| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 852 人关注过本帖
标题:一个投票算法!请高手指出错误!
只看楼主 加入收藏
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
收藏
 问题点数:0 回复次数:4 
一个投票算法!请高手指出错误!
int i,j,index[100];
    for(i=0;i<100;i++)
    {
        for(j=0;j<10;j++)
          if(xx[i][j]==0) continue;     /* 哪一行全为0,便把这一行的标示赋值为1*/
          if(j==9) index[i]=1;
        for(j=0;j<10;j++)
          if(xx[i][j]==1) continue;        /* 哪一行全为1,便把这一行的标示赋值为1*/
          if(j==9) index[i]=1;
        if(index[i]!=1)              /* 统计标示不为1的行(即改行不全为0或者1)*/
        {
            for(j=0;j<10;j++)         /* 的对应列的1数字出现的次数*/
            if(xx[i][j]==1) yy[j]++;
        }


这个算法有问题吗?
我没看出来,可运行的时候显示每个列的1出现的次数都为0???????????????
搜索更多相关主题的帖子: 算法 index continue 赋值 
2008-04-10 09:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
这个xx[][]和yy[][]是从哪来的?

能不能把源码贴上来?
2008-04-10 09:49
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
收藏
得分:0 
10个人100行的数据文件f.dat,存放格式每行长度均为10位,每行第一位数表示第一个人的选中情况,第二位数表示第二人的选中情况,依次类推,内容均为1或者0字符,1表示选中,0表示未被选中,全选或者全不选均视为无效选票,先把数据文件f.dat读入xx[100][11],编制函数统计每个人的选票数,把得票数分别存入到y[0]到y[9],我的这个函数就是想实现统计选票,下面是我改进的函数,改进了一下,不过还是错误,和同学商量,都没觉得有错误?
int i,j=0,k;
    char *p;
    for(i=0;i<100;i++)
    {
        p=xx[i];
        while(*p)
        {
            if(*p=='0') j++;
             p++;
        }

        if(j!=0&&j!=10)
        {
            for(k=0;k<10;k++)
            yy[k] += xx[i][k]-'0';
        }
2008-04-10 10:39
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
因为没作过这个程序,也无法测试,所以提个建议:

    你把100行10列,存入另一个数组,改为10行100列,然后依次计算列数,应该比较容易些。
2008-04-10 11:55
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
试着作了一个,你看是否可行?
因为没有测试,也无法验证它的正确性,请您看一看,希望对您有参考价值。
我是作的10行100列的数组。
程序代码:
int i,j,depiao;
for(i=0;i<10;i++) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   行
{
        depiao=0;  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 把记数器赋零
        for(j=0;j<100;j++)//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  列
        {
               if(xx[i][j]==1)  //~~~~~~~~~~~~~~~~~~~~~~~  如果xx[i][j]为1,证明有选票
                        depiao++;   //~~~~~~~~~~~~~~~  记数器加1
        }
        yy[i]=depiao;   //~~~~~~~~~~~~~~~~~~~~~~~~~`  把得票数赋在另一数组中
        if(depiao==0||depiao==100) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  如果得票数为零或为全票
        {
                printf("yy[%d]为无效票!\n",i);
                continue;   //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`声明此票作废,执行下一行
        }
        printf("yy[%d]得票数为:%d\n\n",i,depiao);  //~~~~~~~~~~~~ 输出每一行的得票数
}
2008-04-10 12:15
快速回复:一个投票算法!请高手指出错误!
数据加载中...
 
   



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

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