课堂作业——找“小水王”

一、程序要求

  三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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  
描述:程序设计问题,不知道该如何入手。
 
 
 
 
 

八、实验总结

  因为已经完成了第一次的找“大水王”的程序,所以这次稍微容易了一些,关键的消除思想已经有了,只是将一个改为三个,具体写程序的时候和上次还是有点不一样的。通过这两次的编程,我对这个问题有了更深的了解,对之前的解决方法也更了解了。

原文地址:https://www.cnblogs.com/zhyying/p/5533360.html