找水王02
1、实验题目:
在上一个实验的基础之上进行的,题目是水王没有了但是统计结果显示有三个发帖很多的ID ,据统计他们的发帖数量超过了1/4,从列表中找到他们。
2、设计思想:
再上一个实验的基础之上,将水王假设为三个然后一一对比找到水王。
上次思路:子函数 bijiao ()是用来查找水王的计算思想,首先定义整型count来计数水王出现发的次数,定义字符型k来代替“水王”初始设为字符串数组中第一个数组,所以子函数中可能会出现多个“水王”。For循环语句从i=1开始用k和字符传输组中的元素作比较如果相同计数count加1。如果count不等于零减1;如果元素既不相同count又不满足不为零将count置为零;接下来当count=0时k的值改变,k=ArrayOfking[i];count同时置为1;循环最后输出最后水王k;主函数中定义字符串并赋值;调用子函数运行输出最后结果;
本次试验是在第一次实验的思想上做的,实验关键就是使每个水王不同,这就需要在最开始假设的时候设定条件;
实验代码:
1 #include<iostream> 2 using namespace std; 3 void bijiao(int num[]) 4 { 5 int count_1=0,count_2=0,count_3=0;//计水王出现的次数 6 int king_1=0,king_2=0,king_3=0;//用来计为水王 7 //循环用来找水王 8 for(int i=0;i<9;i++) 9 { 10 if(count_1==0&&king_2!=num[i]&&king_3!=num[i])//用来找第一个水王 11 { 12 count_1=1; 13 king_1=num[i]; 14 } 15 else if(count_2==0&&king_1!=num[i]&&king_3!=num[i])//用来找第二个水王 16 { 17 count_2=1; 18 king_2=num[i]; 19 } 20 else if(count_3==0&&king_1!=num[i]&&king_2!=num[i])//用来找第三个水王 21 { 22 count_3=1; 23 king_3=num[i]; 24 } 25 else 26 { 27 if(num[i]==king_1)//判断水王是否再次出现 28 { 29 count_1+=1; 30 } 31 else if(num[i]==king_2) 32 { 33 count_2+=1; 34 } 35 else if(num[i]==king_3) 36 { 37 count_3+=1; 38 } 39 else 40 { 41 //如果三个水王和num[i]都不匹配,则将所有的水王的数量减一 42 count_1--; 43 count_2--; 44 count_3--; 45 //保证count的值要大于0 46 if(count_1<0) 47 { 48 count_1=0; 49 } 50 if(count_2<0) 51 { 52 count_2=0; 53 } 54 if(count_3<0) 55 { 56 count_3=0; 57 } 58 } 59 } 60 61 } 62 cout<<"第一个水王:"<<king_1<<endl; 63 cout<<"第二个水王:"<<king_2<<endl; 64 cout<<"第三个水王:"<<king_3<<endl; 65 } 66 int main() 67 { 68 int num[9]={12,12,33,22,12,33,45,45,1}; 69 cout<<"水王的ID:"<<endl; 70 for(int i=0;i<9;i++) 71 { 72 cout<<num[i]<<" "; 73 74 } 75 cout<<endl; 76 bijiao(num); 77 }
实验截图:
实验总结:
核心实验思想是借鉴的同学的,实验虽然能实现但是会出现一些问题比如实验要求必须在1/4以上还有字符串的数组不能实现目前正在寻找解决办法,实验在最开始自己写实验的时候还是有很多误区,尤其是在三个水王的设定的时候,思路比较混乱,借鉴了同学的核心思想能理解读懂但是错误还是没有解决;