题目详细要求、参考资料及更新发布于: http://lamda.nju.edu.cn/xiez/bop19/week_1/ 第一周 字符串与文件输入输出 题目详细要求、参考资料及更新发布于: http://lamda.nju.edu.cn/xiez/bop19/week_1/

Slides:



Advertisements
Similar presentations
中国职教学会质量保障与评估研究会2016年学术年会
Advertisements

方案設計與評估.
数据结构 杨鹏宇 QQ: 版权所有,转载或翻印必究
34 府学胡同的文天祥祠,相传是南宋民族英雄文天祥当年遭囚禁和就义的地方,1376年明洪武九年建祠 。
授课教师:江星玲 1.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
四資二甲 第三週作業 物件導向程式設計.
高考文言文的整体阅读.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
人力资源管理 human resource management
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
11 物流仿真技术 11.1物流系统仿真 11.2 物流仿真方法 知识归纳 复习题.
The discipline of algorithms
雷 霆 战 机 By—谷恩轩&余万全.
第11章 输入输出流类.
关于英语教学中课外阅读的教学反思 上海市中职英语中心组 沈毅.
C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
C++程序设计 王希 图书馆三楼办公室.
C++的檔案處理 綠園.
好好國際物流股份有限公司 全球運籌物流服務建議 中 華 貨 物 通 關 自 動 化 協 會 理 事 長 劉 陽 柳 二○○二年五月十五日
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
臺北市立大學 資訊科學系(含碩士班) 賴阿福 CS TEAM
第一章 C语言概述.
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
2010 程式設計比賽 Railroad Tycoon.
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
程式撰寫流程.
An Introduction to Computer Science (計算機概論)
檔案 將資料存入磁碟或由磁碟取出資料的方式, 稱為檔案存取處理。 C語言的檔案處理 C++語言的檔案處理.
第八章 文件 引述 输入输出流和文件概述 文件操作 流的格式化输出 程序举例 本章小节.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
Visual Basic 6.0 ——程序设计.
104年高中職校長會議 學生學習力檢測與精進學習 鳳新高中校長 羅金盛.
C++语言程序设计 第十一章 流类库与输入/输出.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
第 14 章 輸出與輸入.
第十三讲 文件流与 输出输入重载.
資料結構 Data Structures Fall 2006, 95學年第一學期 Instructor : 陳宗正.
第7章 输入/输出流 文件和I/O流概述 标准I/O流的对象及其成员函数 文件流.
软件工程 第四章 软件设计 软件过程设计技术与工具.
第3章 變數、算術運算、 數學函數及輸入輸出.
Introduction to the C Programming Language
题目详细要求、参考资料及更新发布于: 第三周 代码组织与面向对象初探 1 题目详细要求、参考资料及更新发布于:
C++的檔案處理 綠園.
程式的時間與空間 Time and Space in Programming
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
Chapter 11 使用者資料包通訊協定.
第十一章 IO流与文件系统 丘志杰 电子科技大学 计算机学院 软件学院.
本节内容 文件读写 视频提供:昆山爱达人信息技术有限公司.
資料結構簡介 綠園.
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
算法基础 上机实验 4 学 期: 2016 (秋).
算法基础 上机实验 4 学 期: 2017 (秋).
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
結構、檔案處理(Structure, File)
Arguments to the main Function and Final Project
第2章 文件操作 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
有理数的乘方(二).
The role of Algorithms in Computing
面向对象程序设计 C++教程 西安工业大学 于帆.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
题目详细要求、参考资料及更新发布于: 第二周 链表与指针 题目详细要求、参考资料及更新发布于:
Presentation transcript:

题目详细要求、参考资料及更新发布于: http://lamda.nju.edu.cn/xiez/bop19/week_1/ 第一周 字符串与文件输入输出 题目详细要求、参考资料及更新发布于: http://lamda.nju.edu.cn/xiez/bop19/week_1/

练习一

关键词检测 Computer programming is the process of designing and building an executable computer program for accomplishing a specific computing task. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding[1][2]). 文章中是否存在关键字“programming”? 背景?敏感词过滤? 完成程序从文本文件article.txt中读入一段英文短文,并从 标准输入中读入一个单词,输出文中该单词是否出现。若 单词出现,输出True,否则输出False。

样例输入输出 article.txt Computer programming is the process of designing and building an executable computer program for accomplishing a specific computing task. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding[1][2]). Input: computer Output: True

要求 仅大小写不同视作相同的单词。单词可能会被空格、换行、标点、数 字或其他非字母字符隔开,你可能需要逐字符读入之后按照非字母字 符分词。 本周的习题目标为复习字符串和数组的操作,不允许使用一切有关字 符串处理的库函数,包括但不限于strcmp、strcpy、strlen、strcat 等。单词不会超过200个字符。 背景?敏感词过滤?

实现要求 请注意程序的模块化实现,并将下面两个功能单独实现成函数: void to_lower(char *s):实现将字符串转为小写的功能,以 此完成大小写不敏感的字符串比较。 int/bool str_equal(char *s1, char *s2):当两个字符串相同 时输出1/True,否则输出0/False。 在今后的编程中,也请注意程序的模块化。

题目参考:文件输入输出 1. 输出输出重定向:freopen 把”input.txt”的内容当作屏幕输入: freopen("input.txt", "r", stdin); 用完之后关闭文件: fclose(stdin); 详细内容请见片头链接 把屏幕输出存到”output.txt”: freopen("output.txt", "w", stdout); 用完之后关闭文件: fclose(stdout);

题目参考:文件输入输出 2.更通用的文件打开方法:fopen 使用文件指针: FILE *fp_in = fopen("input.txt", "r"); 需要调用相应的文件读入函数,并在读取完成后关闭文件。 相应地,输出则使用: FILE *fp_out = fopen("output.txt", "w");

题目参考:文件输入输出 2.更通用的文件打开方法:fopen

题目参考:文件输入输出 3. C++的文件输入输出流:fstream C++可以使用文件输入输出流。 ifstream fin("input.txt"); ofstream fout("output.txt"); 之后,你可以像使用cin/cout一样使用fin/fout。

练习二

多次字典查询 现实问题:词典规模大,查询频繁 如何优化程序性能?

样例输入输出 article.txt Computer programming is the process of designing and building an executable computer program for accomplishing a specific computing task. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding[1][2]). Input & Output: computer True program Nanjing False

多次字典查询 – 哈希表(散列表) 哈希表(Hash Table)是一种支持快速查询的数据结构。其通 过设计一个哈希函数,将数据映射到表中的一个位置来进行查询。 例如,int f(string s)接受字符串输入并输出0-99的整数。f("apple")=20, f("computer")=7。通过维护一个大小为100行的表(数组),当单词"apple"出现时,我们在表格第20行的位置进行标记;当单词"computer"出现时,在表格第7行的位置进行标记。当查询关键词"computer"时,计算f("computer")=7,查表第7行,即可知道该单词已经出现过。通过使用哈希表,我们在查询时避免了待查字符串与词典中的字符串进行一一比较,仅需计算一次f()的值,然后直接去表格的对应位置检索即可。

多次字典查询 – 哈希表(散列表) 冲突:不同单词占用表格同一行。 一种解决方案:使用链表存储

多次字典查询 – 哈希表(散列表) 哈希函数设计关键:将字符串均匀地映射到表格的各个位置 例如:将由小写字母组成的字符串视为26进制的数字,对一个 大素数P(例如23333)取模。这是一种对字符串进行哈希的常 用方式。(你可以在作业中直接使用这个函数)

多次字典查询 – 哈希表(散列表) 请根据自己的掌握情况,选择是否使用链表解决冲突: 如果你还不能熟练实现链表,请实现一个不考虑冲突的哈希表并完成题目。由于冲突导 致可能查询出错,你可能会丢到约10%的分数。 如果你能够实现链表,请实现一个使用链表解决冲突的哈希表并完成题目。

多次字典查询 – 哈希表(散列表) 在题目一要求的两个函数以外,请实现下列函数: int hash(char *s):哈希函数,上文中的函数f(); void ht_insert(char *s):向哈希表中添加字符串; int/bool ht_find(char *s): 当哈希表中存在字符串s时输出1/True,否则输出0/False。 如果你已经能够初步掌握类的使用,你可以将哈希表实现为类,上述函数可以实现 成类的成员函数: int HashTable::hash(char *s) void HashTable::insert(char *s) bool HashTable::find(char *s)