作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 巫师升等测验题目四
时间Tue Nov 11 10:44:33 2008
※ 引述《laechan (小太保)》之铭言:
这程式我刚写好了。
程式位置: /u/l/laechan/test4.c
程式行数: 157 行(小程式)
宣告了 abc 跟 d 两个全域变数.
大概花了半小时左右完成.
: 底下是一个阵列资料...
: mixed abc = ({ "a", "b", "b", "c", "c", "c" });
: 撰写一个房间物件存放上面的阵列,然後 add_action 几个指令..
: 1)当使用者输入 test41 a 时,能秀出 "a" 这个字串在阵列中的
: 第几个位置; 比方输入 test41 b 时能秀出它在第 2 及第 3 个
: 位置(或阵列位置第 1 & 第 2 个)。而如果输入的字串没有在上
: 面的阵列中时(如输入 test41 d), 就显示相关讯息。
> test41 0
test41: 你输入的[0]不在 abc 这个阵列中喔.
> test41 b
test41: [b]位於 abc 这个阵列中的第 2 3 个位置.
> test41 c
test41: [c]位於 abc 这个阵列中的第 4 5 6 个位置.
: 2)当使用者输入 test42 a 时,你所撰写的程式可以把 abc 中的
: "a" 去掉, 剩下的 abc 会变成 ({"b","b","c","c","c"}), 请
: 以 identify 的方式把「剩下的 abc」秀出。其它以此类推。
: 而如果 test42 後面接的东西,例如 test42 d, d 不在 abc
: 里头时就不改变 abc 这个阵列的资料并显示相关讯息。
> test42 0
test42: 你输入的[0]不在 abc 这个阵列中喔.
> test42 a
test42: 原先的 abc = ({ "a", "b", "b", "c", "c", "c" })
你指定要删去 abc 里头的 [a] 资料.
资料已删除, 新的 abc = ({ "b", "b", "c", "c", "c" })
> test42 b
test42: 原先的 abc = ({ "b", "b", "c", "c", "c" })
你指定要删去 abc 里头的 [b] 资料.
资料已删除, 新的 abc = ({ "c", "c", "c" })
: 3)当使用者输入 test43 d 时,你所撰写的程式可以为 abc 这个
: 阵列补上 "d" 这个资料,此时的 abc 就会多出一个新的资料
: 即 abc = ({"a","b","b","c","c","c","d"})
: 以 identify 的方式把新的 abc 显示出来。其它以此类推。
: (即不管 test43 後面接什麽,abc 都要能把它包含进去)
> test43 0
test43: 原先的 abc = ({ "a", "b", "b", "c", "c", "c" })
你指定要为 abc 这个阵列增加 [0] 资料.
资料已增加, 新的 abc = ({ "a", "b", "b", "c", "c", "c", "0" })
> test43 123
test43: 原先的 abc = ({ "a", "b", "b", "c", "c", "c", "0" })
你指定要为 abc 这个阵列增加 [123] 资料.
资料已增加, 新的 abc = ({ "a", "b", "b", "c", "c", "c", "0", "123" })
: 4)当使用者输入 test44 n 时,代表使用者打算删掉 abc 这个阵
: 列中的第 n 个元素,例如 test44 1 代表要删掉 abc[0], 请将
: test44 的执行结果以 identify 的方式秀出. 而如果指定的 n
: 不在 abc 的阵列大小内时, 就显示无法执行的相关讯息.
> test44
test44: 请随便输入一个数字.
> test44 1
test44: 原先的 abc = ({ "a", "b", "b", "c", "c", "c" })
你指定要删除这个阵列中的第 1 笔资料.
这笔资料的内容是 [a].
资料已删除, 新的 abc = ({ "b", "b", "c", "c", "c" })
> test44 5
test44: 原先的 abc = ({ "b", "b", "c", "c", "c" })
你指定要删除这个阵列中的第 5 笔资料.
这笔资料的内容是 [c].
资料已删除, 新的 abc = ({ "b", "b", "c", "c" })
> test44 2
test44: 原先的 abc = ({ "b", "b", "c", "c" })
你指定要删除这个阵列中的第 2 笔资料.
这笔资料的内容是 [b].
资料已删除, 新的 abc = ({ "b", "c", "c" })
: 底下是 deep 升 adm 的加考项目..
: 5)当使用者输入 test45 时, 请宣告一个 mapping 变数, 程式能
: 将 abc 对映到该 mapping 变数中存放, 如底下...
: mapping d = ([ "a" : 1,
: "b" : 2,
: ...
: ]);
: 亦即 d 储存的是 abc 阵列中的元素, 每一个的个数是多少.
: 请以 identify 的方式秀出 d。
> test45
test45: 阵列 abc = ({ "a", "b", "b", "c", "c", "c" })
原先的 mapping d = ([ ])
将 abc 汇入 d 之後的 mapping =
([ "b" : 2, "c" : 3, "a" : 1 ])
: 6)现在你有 d 了,当使用者输入 test46 时,程式可以 keys(d)
: 将 d 的 key 读出来,然後把这个阵列依 "a", "b", "c" ..的
: 字母顺序重新排列,例如读出来的阵列假设是
: ({"c", "b", "c", "a", "b"}) 请将它重新排列为
: ({"a", "b", "b", "c", "c"})
这里意思错了,算了当做没这题。
这题的原意是,把 keys 读出来,因为以上例来说 "b" 的值是 2,
这时就依字母顺序以及後面的数字, 来重新还原 abc
: 额外项目
: 1)test41~test46 可交互测试。(不做可交互测试的也可)
test41~test44 可交互测试, 而不论怎麽测, test45 都可以把 abc
汇进 d 中.
: 2)允许使用者清空 abc 的资料後自建供测试的资料。
使用 test42 或 test44 1 就可以一直把 abc 清到资料完全消失.
然後就可以用 test43 来建新资料.
: 3)阵列字串元素的排列顺序部份,如果该字串并非单一字母时,
: 以该字串的「第一个字母」做排序依据。
> test47
test47: 原先的阵列 abc = ({ "c", "b", "a", "b", "d", "c" })
新的阵列 abc = ({ "a", "b", "b", "c", "c", "d" })
: 其它说明同 3556 篇。
: Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.230.246