| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:向大家请教一个简单"选举结果"的问题
只看楼主 加入收藏
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
 问题点数:0 回复次数:7 
向大家请教一个简单"选举结果"的问题

编,链都可以过.但我这个问题好象在于, s=can[j].votes/sum; 这里的sum用的是初始化的值,而cout<<" "<<setw(7)<<"Total"<<setw(7)<<sum<<endl;这里的sum又是累加后的值,这是让我好为难啊.请问应该怎么改啊?

谢谢了.

另外大家知道能实现这个问题的更简单的方法吗?

我这个是应该是最复杂的了.:)

#include<iostream>
#include<iomanip>
using namespace std;

class candidate
{
public:
char name[5];
int votes;
void getdata()
{
cout<<"请输入候选人信息:(姓名 票数)";
cin>>name>>votes;
}
void dispaly()
{
cout<<" "<<name<<setw(7)<<votes;
}
};

int main()
{
candidate can[5];
int sum=0,ava,k,s;
for(int j=0;j<5;j++)
{
can[j].getdata();
sum+=can[j].votes;
}


cout<<"候选人"<<setw(7)<<"票数"<<setw(10)<<"百分率"<<endl;
for(j=0;j<5;j++)
{
can[j].dispaly();
s=can[j].votes/sum;
ava=s*100;
cout<<setw(6)<<ava<<endl;
}
for(j=0;j<4;j++)
{
for(int i=j+1;i<5;i++)
{
if(can[j].votes < can[i].votes)
k=i;
else
k=j;
}
}
cout<<" "<<setw(7)<<"Total"<<setw(7)<<sum<<endl;

cout<<"获胜的候选人是:"<<can[k].name<<endl;


return 0;

}

搜索更多相关主题的帖子: 结果 选举 
2006-03-25 14:07
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 
以下是引用师妃暄在2006-3-25 14:07:00的发言:

编,链都可以过.但我这个问题好象在于, s=can[j].votes/sum; 这里的sum用的是初始化的值,而cout<<" "<<setw(7)<<"Total"<<setw(7)<<sum<<endl;这里的sum又是累加后的值,这是让我好为难啊.请问应该怎么改啊?

谢谢了.

另外大家知道能实现这个问题的更简单的方法吗?

我这个是应该是最复杂的了.:)

#include<iostream>
#include<iomanip>
using namespace std;

class candidate
{
public:
char name[5];
int votes;
void getdata()
{
cout<<"请输入候选人信息:(姓名 票数)";
cin>>name>>votes;
}
void dispaly()
{
cout<<" "<<name<<setw(7)<<votes;
}
};

int main()
{
candidate can[5];
int sum=0,k,;
float s,ava;//你犯了个小错误,
for(int j=0;j<5;j++)
{
can[j].getdata();
sum+=can[j].votes;
}


cout<<"候选人"<<setw(7)<<"票数"<<setw(10)<<"百分率"<<endl;
for(j=0;j<5;j++)
{
can[j].dispaly();
s=can[j].votes/sum;
ava=s*100;
cout<<setw(6)<<ava<<endl;
}
for(j=0;j<4;j++)
{
for(int i=j+1;i<5;i++)
{
if(can[j].votes < can[i].votes)
k=i;
else
k=j;
}
}
cout<<" "<<setw(7)<<"Total"<<setw(7)<<sum<<endl;

cout<<"获胜的候选人是:"<<can[k].name<<endl;


return 0;

}


路漫漫其修远兮 吾将上下而求索
2006-03-25 14:32
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
gototheworld
谢谢

但是根本问题不在这里

问题还是没得到解决~

有实力才会有魅力 实力来自坚持不懈的努力
2006-03-25 19:04
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

师妃暄,这个我稍微修改了一下
#include<iostream>
#include<iomanip>
using namespace std;

class candidate
{
public:
char name[5];
int votes;
void getdata()
{
cout<<"请输入候选人信息:(姓名 票数)";
cin>>name>>votes;
}
void dispaly()
{
cout<<" "<<name<<setw(7)<<votes;
}
};

int main()
{
candidate can[5];
int sum=0;
int i;
static int k;
float s;//你犯了个小错误,
for( i=0;i<5;i++)
{
can[i].getdata();
sum+=can[i].votes;
}


cout<<"候选人"<<setw(7)<<"票数"<<setw(10)<<"百分率"<<endl;
for(i=0;i<5;i++)
{
can[i].dispaly();
s=(float)can[i].votes/sum;

cout<<setw(9)<<s*100<<endl;
}
int Max=can[0].votes;
for(i=1;i<5;i++)
{
if(can[i].votes>Max)
{
Max=can[i].votes;
k=i;

}
}


cout<<" "<<setw(7)<<"Total"<<setw(7)<<sum<<endl;

cout<<"获胜的候选人是:"<<can[k].name<<endl;


return 0;

}


路漫漫其修远兮 吾将上下而求索
2006-03-25 20:55
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

应该可以吧


路漫漫其修远兮 吾将上下而求索
2006-03-25 21:00
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
gototheworld

非常非常感谢你

终于成功了

但有一点点不明白:
s=(float)can[i].votes/sum;

这句里面的(float)怎么写在这?

为什么写了它就能成功,不写它就为0 ??

怎么我学的C++知识里面没这种表示方法??

它怎么用的?

能告诉我吗?

有实力才会有魅力 实力来自坚持不懈的努力
2006-03-25 21:33
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

这是强制类型转换,如果你不加float的话,你用can[i].votes/sum;因为分子小于分母,他们都是整型所以结果就是0,用了float就把他们转化过来了

路漫漫其修远兮 吾将上下而求索
2006-03-25 22:14
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
哦...你一说我就明白了....

哈哈...懂了.谢谢了啊


有实力才会有魅力 实力来自坚持不懈的努力
2006-03-26 11:05
快速回复:向大家请教一个简单"选举结果"的问题
数据加载中...
 
   



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

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