/*设计思路: Id 1,2,2,3,4,2,2,3,2,2, 2, 2 id 0 1 2 3 4 5 6 7 8 9 10 11 可以把这个程序看成一个争抢“水王”的问题 ①id[i](Id=1) 成为水王shuiwang=id[0],并且他的票数为sum=1,因为目前只有一个1 ②shuiwang与id[i+1](id=2)比较 如果相等shuiwang再得一票,sum=1+1=2 如果不相等,shuiwang减一票,sum=1-1=0 ③把sum与0进行比较 如果票数sum=0则id[i](Id=1)失去竞争“水王”的权利,id[i+1](Id=2)成为“水王”,shuiwang=id[i+1] 如果票数sum>0则id[i](Id=1)仍是“水王” ⑤重复②③步骤 */ #include<iostream> #include<fstream> using namespace std; void readId(int id[100],int &l){ //读取文件中的内容,并放到数组id[]中 注:l需要用&但是数组不用!! ifstream infile("id.txt"); if (!infile) { cout << "读取失败!" << endl; } while (infile >> id[l]) { l++; } infile.close(); } void findShuiwang(int id[100],int &shuiwang,int &l)//寻找水王 { int sum = 1; for (int i = 1; i < l-1; i++) { if (shuiwang = id[i + 1]) { sum++; } else { sum--; } if (sum == 0) { shuiwang = id[i + 1]; } } } void main() { int i,l=0,id[100];//l为数组长度 int shuiwang; readId(id,l); if (l == 0) { cout << "文件为空!!" << endl; } else { shuiwang = id[0]; findShuiwang(id, shuiwang, l); cout << "大水王是:" << shuiwang << endl; } }
测试1:
测试2:文件为空
测试3:
int i,l=0,id[100];//l为数组长度
id[]数组的的长度应该根据实际情况来定义,目前的一张id表,id数目应该不会超过100。
测试4:本程序只是一个解决该问题的思路,所以在定义Id的时候默认为int,在此也没有考虑如果Id存在符号的情况。因为如果这是一张真实的Id表,Id就不可以存放到数组中。
应该定义一个结构体。