本次作业需要大家综合目前学到的所有 C 有关的知识完成(也可以自行学习并结合一
些其他的数据结构相关内容),本次作业由于具有一定的量度,会根据大家的最后程序实现
运行结果正确性(2/3)以及程序运行时间(相比于所给的样例程序加速效果,最后依据大家
的整体完成情况评定)(1/3)给大家不同的分数,本次分数会占期末总分的 30%(第一次作
业占 10%,平时表现占 10%,期末大作业占 50%)。
作业说明:
1. 本次作业给出了一个名字是“dictionary.txt“的文件,该文件给出了所有正确拼写的单词
共 143091 个,其长度最短为 1 个字符,最长为 45 个字符,组成单词的字符包括了 a-z
的 24 个小写字母和单引号“’”。字典中的所有单词均按照字典顺序排序,因此无需再
次对输入进行排序。
2. 本次给出的一些供大家自行测试的样例,他们被放在 test 文件夹下面,而相应的结果文
件被放在了 key 文件夹下面,他们被用来给大家 debug,但是并不会用来进行最终的正
确性和时间测试。
3. 本次作业基本要求便是,按顺序输出所有不存在于字典中英文单词(其中由连续的字符
组成,这些字符只能是“’”以及大小写的 24 个字母,并且起始字符不能是单引号),
并将错误拼写的单词数目输出,格式如 5 所示。
4. 注意:在检查时大小写是等效的,比如:字典中包含“abandon’s”,如果测试文件中存
在“AbanDon’s”,我们认为是正确的。
5. 下面给出一个样例说明,下面是原文:
[111th Congress Public Law 148]
[From the U.S. Government Printing Office]
[[Page 124 STAT. 119]]
Public Law 111-148
111th Congress
实际传入的输入是:
a
aaa
aaas
aachen
aalborg
[…dictionary.txt 的其他内容…]
zygotes
zymurgy
[111th Congress Public Law 148]
[From the U.S. Government Printing Office]
[[Page 124 STAT. 119]]
Public Law 111-148
111th Congress
以所给的 dictionary 为例,输出应该是(这里必须和原文一样,不进行大小写变换):
U
S
STAT
Words Misspelled: 3
其中非字母和单引号的字符都可以被忽略(等效于空格),并转换大小写后,原文可以
转化为:
th congress public law
from the u s government printing office
page stat
public law
th congress
而输出的单词都不存在于字典中。
6. 输入数据的方式,为了简化本次作业,测试内容不需要大家从文件读取,测试将会从标
准输入传入(和一般的 scanf 的输入方式相同),输入内容首先是 dictionary.txt,然后是
所有的测试样例,输出大家按照标准输出即可(即 printf)。字典的输入会以一个“zymurgy”
的单词作为结尾,而测试内容以 EOF 结尾(使用 scanf 的返回值判断,返回非 EOF 表
示正常输入,返回 EOF 表示输入结束)。
7. Ubuntu 中请不要使用 cs50.h 头文件,大家可以根据自己的需要添加头文件(你可能需
要 stdio.h、string.h、ctype.h、string 等头文件)。大家可以使用 C++的 string 类型或者 C
的 char 数组进行处理(你也可以按照自己需要快速查找定义自己的数据结构)。
8. 本次作业可以在 cs50 的环境下完成,也可以在 Ubuntu 虚拟机上面完成,或者在
windows/mac 上面不同 C 编程 IDE 上面进行。但是测试必须在 cs50 环境中或者虚拟机
中完成。但是 cs50 环境下并不支持自动提交,你需要将在本地测试正确的程序源代码
发送到助教邮箱(lsk_mprc@pku.edu.cn)
cs50 环境下的测试方法:
⚫ 在教学网上下载了 homework2 的压缩包,并上传到 cs50 的 workspcae 中,解压即可
⚫ 请在解压后的 homework2 文件夹里新建 cpp 或 c 源文件来进行测试
⚫ 如果你想按照自己的方法测试,请同学们自行处理
⚫ 如果你想用 run.sh 进行测试,请看末尾的测试说明
ubuntu 虚拟机环境下的测试和提交方法:
⚫ 无需下载任何文件,更新 submit50 以后会自动将相关内容下载到虚拟机中,其中
homework2 的文件夹会默认放在桌面(你可以移动该文件夹)。
⚫ 提交方法和第一次 scratch 作业提交方法相同,只是此次需要拖入的文件是你的源代码
文件,并注意提示选择第几次作业时选择正确(第二次)。提交后会自动检测你程序的
正确性并给出其执行时间,请尽量优化你的程序来更快的完成测试吧!如果你对结果满
意,你可以选择打包文件并提交上传即可完成本次作业。
测试说明:
⚫ 首先你需要执行 chmod +x [run.sh 文件路径] 指令来添加可执行权限(ubuntu 环境下不
需要这一步操作)
⚫ 拖入 run.sh 文件,加上你的源代码文件名(不要加后缀名)
例如我的源代码文件是 test2.cpp,那么我应该使用命令:
/home/lee/Desktop/homework2/run.sh test2
来完成测试。
需要注意的是,ubuntu16.04 以及更新的版本 gcc/g++编译器版本太高(高于 5.0),会出现
错误,同学们可以通过指令“gcc/g++ -v”来进行版本查询,如果高于 5.0,请运行 homework2
文件夹里面的 vchange.sh 来降低版本(拖到终端回车运行即可)。
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。