本文主要是介绍MOOC清华《程序设计基础》第7章:统计活跃用户数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
初次编程后的代码(版本2.0):
#include <iostream>
#include <fstream> //包含文件操作的头文件
#include <cstring> //added in 2.0, 字符串操作头文件
using namespace std;int main()
{//ifstream fin("log.txt"); //ifstream表示input file stream//上面这一行也可以写成如下两行:ifstream fin;fin.open("log.txt"); int count = 0;char ids[4500][20]; //added in 2.0, 记录所有的编号 while(!fin.eof()) //eof表示end of file{int year, month, day, hour, minute, second;char tmp, id[20], operation[10];//获取文本文件中的一行fin >> year >> tmp >> month >> tmp >> day; // 2015/4/21fin >> hour >> tmp >> minute >> tmp >> second; // 11:16:16fin >> id; // 40dbae14f777cddfin >> operation; // LOGINstrcpy(ids[count], id); //added in 2.0, 将本行的编号拷贝到编号数组中 count++; // 读完一行,计数器加1 } fin.close(); //关闭文件//cout << count << endl; //测试代码 int user_count = 0; //added in 2.0//added in 2.0, 线性查找:在第i项前找与第i项相同的数 for(int i = 0; i < count; i++){int found = -1;for(int j = 0; j < i; j++)if(strcmp(ids[i], ids[j]) == 0){found = j;break;}if(found == -1) //debug记录:千万不要写掉了一个等号 user_count++;}cout << user_count << endl; //added in 2.0, 输出活跃用户数 return 0;
}
“后验优化”后的代码如下:(版本2.1 。线性查找移到遍历循环内部的做法,其实一开始就可以这么设计,只是逻辑上的清晰程度不如上面的代码)
#include <iostream>
#include <fstream> //包含文件操作的头文件
#include <cstring> //added in 2.0, 字符串操作头文件
using namespace std;int main()
{//ifstream fin("log.txt"); //ifstream表示input file stream//上面这一行也可以写成如下两行:ifstream fin;fin.open("log.txt"); int user_count = 0; //added in 2.1char ids[600][20]; //added in 2.1, 记录所有的编号 while(!fin.eof()) //eof表示end of file{int year, month, day, hour, minute, second;char tmp, id[20], operation[10];//获取文本文件中的一行fin >> year >> tmp >> month >> tmp >> day; // 2015/4/21fin >> hour >> tmp >> minute >> tmp >> second; // 11:16:16fin >> id; // 40dbae14f777cddfin >> operation; // LOGINint found = -1;for(int i = 0; i < user_count; i++)if(strcmp(id, ids[i]) == 0){found = i;break;}if(found == -1) //debug记录:千万不要写掉了一个等号 {strcpy(ids[user_count], id); //added in 2.1user_count++;}} fin.close(); //关闭文件cout << user_count << endl; return 0;
}
这篇关于MOOC清华《程序设计基础》第7章:统计活跃用户数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!