您的位置:首页 > 其它

寻找“水王”02

2016-05-27 10:30 274 查看
1.设计思想

①存ID到一个数组

②当某水王出现次数0次时:如果新出现的和别的水王ID相同,别的水王出现次数+1;如果不是,那么它是新水王,记录并给它自己次数+1

③如果出现与某水王相同ID,某水王ID出现次数+1;如果出现全新ID,全部水王ID出现次数-1

2.代码实现

//2016-5-26 李娜
//寻找三个发帖数量超过了1/4的“水王”

#include <iostream>
#include <fstream>
#include <String>
#define N 50
using namespace std;

int main()
{
int j;//循环用数
int i=0;//有i个ID
string id;//当前读取ID
string a
={};//存ID

ifstream infile("e:\\sw.txt");

if (!infile)
{

cout<<"文件打开出错!"<<endl;

}

while (getline(infile,id))//读取每行的ID
{

a[i]=id;
i++;
}
/////////////////////////////////////////////
///////以上:将文件内容给a[i]///////////////////////
///////以下:算水王/////////////////////////////////
////////////////////////////////////////////

int s[]={0,0,0};//分别给三个水王计数用

string sw[]={"","",""};//存水王ID

for(j=0;j<i;j++)
{
if (s[0]==0)//水王1出现0次
{
if (a[j]==sw[1])//如果又出现是第2个水王
{
s[1]++;//水王2出现次数+1
}
else if (a[j]==sw[2])//如果又出现是第3个水王
{
s[2]++;//水王3出现次数+1
}
else//这是新水王
{
sw[0]=a[j];//记录新水王
s[0]++;//出现+1
}
}

else if (s[1]==0)//水王2出现0次,以下代码同上含义
{
if (a[j]==sw[0])
{
s[0]++;
}
else if (a[j]==sw[2])
{
s[2]++;
}
else
{
sw[1]=a[j];
s[1]++;
}
}

else if (s[2]==0)//水王3出现0次,以下代码同上含义
{
if (a[j]==sw[0])
{
s[0]++;
}
else if (a[j]==sw[1])
{
s[1]++;
}
else
{
sw[2]=a[j];
s[2]++;
}
}

else//水王都有存数据了,有可能出现重复的数据,也有可能是新数据;所以重复了就次数+1,新的就次数都-1
{
if (sw[0]==a[i])
{
s[0]++;
}
else if (sw[1]==a[i])
{
s[1]++;
}
else if (sw[2]==a[i])
{
s[2]++;
}
else
s[0]--,s[1]--,s[2]--;
}
}

for (int k=0;k<3;k++)
{
cout<<sw[k]<<endl;
}

}


3.测试截图



4.个人总结

本来是用数组,一组一组比,但是出现两个结果:

一是全变成最后一个ID

二是全一样的ID

我发现那样会覆盖,所以不能那样比
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: