| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 619 人关注过本帖
标题:c语言统计排序问题
取消只看楼主 加入收藏
cxy459508381
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
c语言统计排序问题
要求:按时间段(可以每2小时为一段)对不同类型场地的租用情况进行 排序
txt表格:
图片附件: 游客没有浏览图片的权限,请 登录注册

site就是场地
主程序我是这么写的:
struct yonghu
{
    char gender;
    int age;
    int id;
    int amount;
    char tss[10];
    int starttime;
    int endtime;
    int site;
    int pay;
};
struct paixu1
{
int site1;
int guan2;
};
    char tmp[512]; //定义一个临时变量,存储每一行数据
    int renshu=0,i=0,j=0;
    struct yonghu xinxi[1000];
    struct paixu1 xu[10];
    FILE *infile;
    infile=fopen("yonghuzonghexinxi.txt","r");
    if(infile==NULL)
    {
        printf("\nFailed to open the file");
        exit(1);
    }
    fgets(tmp, sizeof(tmp), infile ); //跳过首行
    printf("\nGender Age    ID          Amount        TSS           Time             site   pay\n");
        while( fgets( tmp, sizeof(tmp), infile ) )
    {
        char c_tmp[128];
        sscanf( tmp,"%c %d %d %d %s %d-%d %d %d", &(xinxi[renshu].gender), &(xinxi[renshu].age),&(xinxi[renshu].id),&(xinxi[renshu].amount),&xinxi[renshu].tss,&xinxi[renshu].starttime,&xinxi[renshu].endtime,&xinxi[renshu].site,&xinxi[renshu].pay);
        printf("%c      %d     %d      %d             %s           %d-%d         \t%d   \t%d\n",xinxi[renshu].gender,xinxi[renshu].age,xinxi[renshu].id,xinxi[renshu].amount,xinxi[renshu].tss,xinxi[renshu].starttime,xinxi[renshu].endtime,xinxi[renshu].site,xinxi[renshu].pay);
        renshu++;
    }
    fclose(infile);
printf("\n以下为按每2小时为一段对不同类型场地的租用情况进行排序");
int shijian1=0,shijian2=2,guan2[10],a,b;
for(i=0;i<6;i++)
{
xu[i].guan2=0;
xu[i].site1=i+1;
}
for(shijian1=0,shijian2=2;shijian2<=24;shijian1+=2,shijian2+=2)
{
for(i=0;i<=renshu;i++)
{
if(xinxi[i].endtime<=shijian1||xinxi[i].starttime>=shijian2)
break;
else
switch(xinxi[i].site)
{
case 1:
xu[0].guan2+=1;
break;
case 2:
xu[1].guan2+=1;
break;
case 3:
xu[2].guan2+=1;
break;
case 4:
xu[3].guan2+=1;
break;
case 5:
xu[4].guan2+=1;
break;
case 6:
xu[5].guan2+=1;
break;
}
}
printf("%d",xu[0].guan2);
   for(i=0;i<6;i++)
{
for(j=1;j<6;j++)
{
if(xu[i].guan2<xu[j].guan2)
{
a=xu[j].guan2;
b=xu[j].site1;
xu[j].guan2=xu[i].guan2;
xu[j].site1=xu[i].site1;
xu[i].guan2=xu[j].guan2;
xu[i].site1=xu[j].site1;
}
}
}
printf("\n时间段:%d-%d\n",shijian1,shijian2);
for(i=0;i<6;i++)
{
printf("\n第%d场馆使用人数为%d\n",xu[i].site1,xu[i].guan2);
}
}

输出是:
图片附件: 游客没有浏览图片的权限,请 登录注册

后面的时间段基本都是这样
求哪里错了,帮我修改下
搜索更多相关主题的帖子: amount 时间段 主程序 c语言 统计 
2014-09-15 23:17
cxy459508381
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-15
收藏
得分:0 
回复 2 楼 TonyDeng
应该就是If的条件有问题,预期是计算出每个site出现的次数,然后降序输出
2014-09-15 23:29
cxy459508381
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-9-15
收藏
得分:0 
回复 4 楼 TonyDeng
为什么不行,我把文件中的数据提出存到结构中,题目要按照时间段,我就分2个小时为一段,比如0-2这个时间段,如果time是0-5,那就是包含在里面,对应的site的使用数+1,最后用对换两个数的思想排序。
2014-09-15 23:56
快速回复:c语言统计排序问题
数据加载中...
 
   



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

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