MOOC清华《程序设计基础》第7章:统计活跃用户数

2024-02-20 10:18

本文主要是介绍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章:统计活跃用户数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727892

相关文章

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead

hdu3333区间统计

题目大意:求一个区间内不重复数字的和,例如1 1 1 3,区间[1,4]的和为4。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显