猫史档案馆


【C++】自己做的C++投票程序,请多多指教!

用户:LCF_viki617LCF_viki617查看:8 回复:2 评论:8 创建时间:2020-05-01T19:49:21


emotion_编程猫_加油

#include<bits/stdc++.h>
 
using namespace std;
//声明结构体,用于存储候选人信息 
struct toup
{
	string name;
	int v;
};
//主函数 
int main()
{	
	//输入候选人相关数据 
	int n;
	toup:cout<<"请输入候选人数量:\a"<<endl;
	cin>>n;
	toup t[n];
	cout<<"请输入候选人名称:\a"<<endl;
	for(int i=0;i<n;i++)
	{
		cin>>t[i].name;
	}
	for(int i=0;i<n;i++)
	{
		t[i].v=0;
	}
	cout<<"请输入总票数!\a"<<endl;
	int temp;
	cin>>temp; 
	cout<<"一共可以投"<<temp<<"票!"<<endl;
	for(int i=0;i<n;i++)
	{
		cout<<"输入"<<i+1<<"为"<<t[i].name<<"投票\a"<<endl; 
	}
	//进行投票 
	int k;
	for(int i=0;i<temp;i++)
	{
		cin>>k;
		if(k>0&&k<=n)
		{
			t[k-1].v+=1;
		}
	}
	//输出票数 
	for(int i=0;i<n;i++)
	{
		cout<<"候选人"<<t[i].name<<"得票:"<<t[i].v<<endl; 
	}
	cout<<"\a";
	//对投票结果进行冒泡排序 
	int h;
	string nh;  
	 for(int i=0;i<n-1;i++)
	 {
	 	for(int j=0;j<n-i;j++)
	 	{
	 		if(t[j].v>t[j+1].v) 
	 		{	 			
				//对候选人票数进行交换 
	 			h=t[j+1].v;
	 			t[j+1].v=t[j].v;
	 			t[j].v=h;
	 			//对候选人姓名进行交换 
	 			nh=t[j+1].name;
	 			t[j+1].name=t[j].name;
	 			t[j].name=nh;
	 		}
	 		
	 		if(t[j].v==t[j+1].v)
	 		{
	 			cout<<"有候选人票数相等,请重新投票!"<<endl;
	 			goto toup;
			 }
		 }
	 }
	 //输出选举结果 
	 cout<<"候选人\a"<<t[n-1].name<<"得票最多,得票:"<<t[n-1].v<<"票,胜出!"<<endl;
	 //询问是否重新投票 
	 cout<<"如果想重新投票,请按Y,否则请按任意键退出!\a"<<endl;
  	 char yn;
  	 cin>>yn;
  	 if(yn=='Y'||yn=='y')
  	 {
  	 	cout<<"投票程序已重新开始!"<<endl;
  	 	goto toup;
	 }
	 else
	 {
	 	return 0;
	 }
 }


回复

上一页1 页 / 共 1下一页
有栖川無限有栖川無限

写的很不错,但是冒泡排序不一定是最佳方案

点赞0


评论


­­­­­­­­­­­­­­

还行吧

点赞0


评论