一、程序要求
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
随着论坛的发展,管理员发现“水王”没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了总和的1/4。你能从发帖列表中快速找到他们吗?
二、程序设计思想
和查找大水王一样采用消除思想。三个进行比较,若不相同,则删除,若相同,则计数器加一。
三、源程序代码
1 //小水王,2016.5.27 2 3 #include <iostream> 4 using namespace std; 5 int main() 6 { 7 int len; 8 int idsum[3] = { 0, 0, 0 }; 9 //int A[100]; 10 int ID[3] = { 0, 0, 0 }; 11 cout << "请输入ID个数:" << endl; 12 cin >> len; 13 int * shuiwang = new int[len]; 14 cout << "请输入所有帖子的ID:" << endl; 15 for (int m = 0; m<len; m++) 16 { 17 cin >> shuiwang[m]; 18 } 19 20 for (int i = 0; i<len; i++) 21 { 22 //先将ID列表初始化,找出三个不同的ID 23 if (idsum[0] == 0 && shuiwang[i] != ID[1] && shuiwang[i] != ID[2]) 24 { 25 idsum[0] = 1; 26 ID[0] = shuiwang[i]; 27 } 28 else if (idsum[1] == 0 && shuiwang[i] != ID[0] && shuiwang[i] != ID[2]) 29 { 30 idsum[1] = 1; 31 ID[1] = shuiwang[i]; 32 } 33 else if (idsum[2] == 0 && shuiwang[i] != ID[0] && shuiwang[i] != ID[1]) 34 { 35 idsum[2] = 1; 36 ID[2] = shuiwang[i]; 37 } 38 //开始进行查找,不同标志idsum+1,相同标志-1 39 else if (shuiwang[i] != ID[0] && shuiwang[i] != ID[1] && shuiwang[i] != ID[2]) 40 { 41 idsum[0]--; 42 idsum[1]--; 43 idsum[2]--; 44 } 45 else if (shuiwang[i] == ID[0]) 46 { 47 idsum[0]++; 48 } 49 else if (shuiwang[i] == ID[1]) 50 { 51 idsum[1]++; 52 } 53 else if (shuiwang[i] == ID[2]) 54 { 55 idsum[2]++; 56 } 57 58 } 59 60 cout << "三个“小水王”的ID为:"<<endl << ID[0] << " " << ID[1] << " " << ID[2] << endl; 61 return 0; 62 }
四、运行结果截图
五、项目计划日志:
周活动总结表
姓名:张莹荧 日期:2016-05-27
日期/任务 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计 | ||
周一 | 100 | 30 | 120 | 250 | |||
周二 | 30 | 30 | 120 | 180 | |||
周三 | 180 | 180 | 360 | ||||
周四 | 100 | 30 | 120 | 250 | |||
周五 | 30 | 30 | |||||
周总结 | 200 | 270 | 60 | 540 | 1070 |
阶段时间和效率 周数:13
不包括上一周在内的累计时间
总计 | 200 | 270 | 60 | 540 | 1070 | ||
平均 | 200 | 270 | 60 | 540 | 1070 | ||
最大 | 200 | 270 | 60 | 540 | 1070 | ||
最小 | 200 | 270 | 60 | 540 | 1070 |
以前各周的累计时间
总计 | 200 | 270 | 60 | 540 | 1070 | ||
平均 | 200 | 270 | 60 | 540 | 1070 | ||
最大 | 200 | 270 | 60 | 540 | 1070 | ||
最小 | 200 | 270 | 60 | 540 | 1070 |
六、时间记录日志:
学生:张莹荧 日期:2016-05-27
教师:王建民 课程: PSP
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
5.23 |
14:00 |
15:50 |
10 |
100 |
上课 |
课间休息 |
5.24 |
10:00 |
10:30 |
0 |
30 |
编程 | |
5.25 |
14:30 |
17:40 |
10 |
180 |
编程 |
中间休息 |
5.26 |
12:30 14:00 |
13:00 15:50 |
0 10 |
30 100 |
编程 上课 |
课间休息 |
5.27 |
11:00 |
11:30 |
0 |
30 |
编程 |
七、缺陷记录日志:
学生: 张莹荧
日期: 2016-05-27
教员: 王建民
程序号: 13
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
5.25 | 1 | 算法 | 编码 | 查资料、问同学 | 30min | |
描述:程序设计问题,不知道该如何入手。 |
八、实验总结
因为已经完成了第一次的找“大水王”的程序,所以这次稍微容易了一些,关键的消除思想已经有了,只是将一个改为三个,具体写程序的时候和上次还是有点不一样的。通过这两次的编程,我对这个问题有了更深的了解,对之前的解决方法也更了解了。