您的位置:首页 > 其它

课堂测试-找小水王

2016-05-27 09:25 274 查看
题目:在上一次的基础上,大水王消失了,出现了三个小水王,并且他们发帖数均超过总数的1/4,要求:如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这三个小水王吗?

思路:继承上次寻找大水王的思想,定义三个计数器,不同则排除,相同则加1,最后剩下的就是三个小水王

代码:

//找小水王 lvguanghao
#include <iostream>
using namespace std;
#define N 100
int main()
{
int xiaoshuiwang[3];
int ID
, a;
int num = 0;
int count[3] = { 0 };
bool flag = false;
cout << "请输入ID" << endl;
while (cin >> a)//输入一个数组 敲回车结束
{
ID[num++] = a;
if (getchar() == '\n')
{
break;
}
}
for (int i = 0; i < num; i++)
{
if (ID[i] == 0)
{
cout << "输入ID数不正确" << endl;
return 0;
}
}

for (int i = 0; i < num; i++)
{
flag = false;
for (int j = 0; j < 3; j++)
{
if (count[j] == 0)
{
continue;
}
if (xiaoshuiwang[j] == ID[i])
{
count[j]++;
flag = true;
}
}

if (flag == true)
{
continue;
}

for (int j = 0; j < 3; j++)
{
if (count[j] == 0)
{
xiaoshuiwang[j] = ID[i];
count[j]++;
flag = true;
break;
}
}

if (flag == true)
{
continue;
}

for (int j = 0; j < 3; j++)
{
count[j]--;
}

}
cout << "水王ID 分别为: " << endl;
cout << xiaoshuiwang[0] << " " << xiaoshuiwang[1] << " " << xiaoshuiwang[2] << endl;
}


单元测试:

测试结果:
===== ===== ===== ===== =====
Compiling...
Compiling done.
===== ===== ===== ===== =====
Doing Unit Test Case 01

输入帖子数量:
0
显示:输入的帖子数量不正确



Done: 01.
===== ===== ===== ===== =====
Doing Unit Test Case 02
输入帖子数量:
10
输入发帖者ID号:
1 2 3 1 2 3 1 2 3 4 5
小水王的ID是:1 2 3



Done: 02.

ALL DONE.
===== ===== ===== ===== =====

开发日志:

星期听课上网读书编程总计
周一2114
周二
周三11
周四213
周五22
时间记录日志:

日期开始时间结束时间休息时间工作时间活动内容
5/2319:0021:1010120查资料
5/2514:0015:1010  120看书
5/2614:0017:3030180编程
5/2714:2016:200120编程写博客
缺陷记录日志:

这次程序继承上次的测试,思想上大致相同,只是分析的情况更复杂,自己一开始没有想通这个想法,而且要判断的情况比较复杂,用三个计数器来记录,还是要多思考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: