b97902HW 板


LINE

呼呼! 在废掉了一整个晚上,从下课後一直到十点,都宅在219被钢弹屠宰、 费尽了九牛二虎之力、晚餐都没吃的弱者我,终於把它解决了! 所以就在此提供一些小小心得啦! (先声明我不是强者,我也是跟大家一样刚接触C语言的新手,所以如果 有方法比较笨或打错,请多多包涵,以下给各位参考看看) ---------------------------废话分隔线----------------------------- ----------------------------以下正题------------------------------ 首先,是第一个步骤,也就是分析字串,一开始的测资有两行, 分别是 [IDENTIFIER_LR NUM]+ 以及 [IDENTIFIER_ST IDENTFIER_LR INDEX]+ 其中[...]+的意思是指,每个[]为一组,[]可以重复出现; Ex. Left 5 Right 5 Left 5 Right 5 Left 4 Start Right 4 Start Left 3 Target Right 4 像这样子的input。 0.前置动作; 我们必需做的,就是把它们切开,切开的方法有很多, 像sscanf(),strtok(),for loop...等等,课本或投影片里应该找得到, /*sscanf()已经可以用了,之前用它写然後传上去拿零分 的同学们可以不用像我一样砍掉重练,直接用就行了。 建议是用sscanf()写会比较方便,for loop也OK, 用strtok()的话要小心会当掉。 */ 然後把切开的东西存起来,一组一组来判断, 比方说,"Left 5","Right 5","Left 5","Right 5","Right 4" "Start Right 4","Start Left 3","Target Right 3" 这样分组判断。 原则上只要for加上一堆if,else if,else等等就可以解决。 重要的是,只要判断出现Error的话,就立刻把它印出来, 所以Error Message可以不只一个! 1.有关(MSG1)的部分: 分析两行测资,//是两行喔! 第一行主要就是判断有没有重复定义的 Left || Right(redifined) /*注意:出现 Left 5 Left 5 Right 3这种状况时,并不算redifined, 要 Left 5 Left 6 Right 3这样才算。 //Error at line1; Left entry redifined. */ 或者是判断 Left || Right 的输入有没有错(unknown identifier) 例如我打XD 5 HAHA 5,理论上程式看不懂XDHAHA, 理所当然就要print出Error啦! //Error at line1 : unknown identifier XD(LR). //Error at line1 : unknown identifier HAHA(LR). 第二行的部分则是确认Start || Target有没有重复出现(mutiple point) /*注意:出现Start Left 5 Start Left 5 Target Right 3这种状况时, ,算mutiple start point,所以请记得要输出Warning喔! */ 以及确认输入的东西有没有错,这部分就跟第一行的差不多罗。 //提示:助教的程式是先判断Start || Target,再判断Left || Right /*注意:当print这个; Error at line1: unknown identfier STRING(LR). 或 Error at line2: unknown identfier STRING(LR). 或 Error at line2: unknown identfier STRING(ST). 的时候,请记得在STRING後面加上(LR) || (ST)。 不要像我呆呆的只印STRING出来. 还有STRING是input进去的错误讯息!也别呆呆的就印"STRING"出来 另外请注意输出的顺序! */ (MSG1)处理完毕後, if 出现Error,你就可以return拿分数(结束程式), else 请继续处理(MSG2)的部分。 /*提醒:如果只有出现Warning的话,请不要终止程式!,继续(MSG2)!*/ 2.有关(MSG2)的部分; 主要是判断Start point以及Target point存不存在, 还有判断它们究竟有没有效。 所以如果说有mutiple point的话是算它存在的喔!(这也是为什麽Warning可以继续) 当你在处理完(MSG1)之後, 应该可以确认有没有输入Start point || Target point, 例如说 Start Left 5 Start Left 5 这样就没有Target point,所以请print No target point! 又比方说 Left 3 Right 3 Target Left 3 这种状况, 就要输出 No start point! Invalid target point! //因为左边只有三间,编号为0,1,2,所以Target Left 3是invalid。 //同样也要注意输出顺序喔! (MSG2)处理完了之後, if 这两个point其中一个无效或不存在,也无法继续下去,所以一样return拿分数。 else 就是要按照 Left X 跟 Right Y 中的 X 及 Y 来读进最後的测资(theta,d,a,alpha)。(先Left的部分,再Right的部分喔) 3.有关矩阵的部分: 先读进X行的(theta,d,a,alpha) //先Left的部分 以及Y行的(theta,d,a,alpha) //再Right的部分 读完之後,就可以用助教提供的Source code,也就是 DHMatrix(double T[][4],double theta,double d,double a,double alpha); 这个function,让各位把每一组(theta,d,a,alpha)转成T[4][4]的矩阵, 也就是说,丢(T[][4],theta,d,a,alpha)给DHMatrix就会跑出一个T[4][4]的矩阵。 因为最终目的是把起始的(x1,y1,z1)以及终止的(x2,y2,z2)找出来, 所以可以先把所有的4*4矩阵都先乘起来後,再用(0,0,0,1)去乘它。 (不要问我最後那个1怎麽来的,我也不知道,有兴趣请找助教谢谢) 例如说: Left 6 Right 6 Start Right 5 Target Left 1M_Start [4][4]=R5*R4*R3*R2*R1*R0; M_Target[4][4]=L1*L0; /*注意:是从最後乘回来喔!矩阵乘法没有交换律的!*/ 其中 LX RX 都是4*4的矩阵(从DHMatrix得到), 也就是说我们必须写个程式把所有的矩阵乘起来。 最後的结果则存在M_Start [4][4] 及M_Target[4][4], 然後 R_Start [4]=point[4]*M_Start[4][4]; R_Target[4]=point[4]*M_Target[4]; 其中point[4]={0,0,0,1} //point为1*4矩阵[0,0,0,1] //这部分助教的Source code中的main function的最後面有,可以参考看看, 最後我们要取的就是R_Target[4]-R_Start[4]的前三码,也就是最後的答案。 /*请记得加上0.000000001,不然会出现-0.00喔!*/ 助教已经把最新的Test2.exe档放上去了,请大家多多利用它吧! (因为之前旧的Test.exe有些电脑不能用,像我的就是。 它对写这只钢弹的帮助可是非常大的喔!) /* (MSG1)指的是; Error at line1: Left entry redefined. Error at line1: Right entry redefined. Error at line1: unknown identifier STRING(LR). Warning at line2: multiple start point. Warning at line2: multiple target point. Error at line2: unknown identifier STRING(LR). Error at line2: unknown identifier STRING(ST). 这七行的相关部分。 而(MSG2)指的是: No start point! No target point! Invalid start point! Invalid target point! 这四行的相关部分。 */ 最後,如果你觉得你的程式怎麽跑明明都正确,却拿不到分, 请检查看看你print出来的MSG部分有没有拼错,还有大小写正不正确喔! ---------------------------以上正题------------------------------ --------------------------废话又来了----------------------------- 呼呼!终於打完了! 难得PO一次文,有什麽不详尽或错的地方,请强者们多多指正! 我还不太会排版,排得不好让大家看得很累,请多多见谅。 是说一开始助教的测资Output部分Key错了,还一次四个, 所以传过的可以再传一次,说不定就多四分了唷! 测资部分据说挺善良的,没什麽太畸型的测资,所以不用像我一样 绞尽脑汁猜测资,多拿点正常测资跟助教的程式比对吧! 谢谢观赏! ----------------------------------------------------------------- --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.242.90
1F:推 jackwhitekim:第一个满分!! 是今天上助教课的同伴XD 11/19 00:26
2F:推 martinku:推原PO是暗黑神手 11/19 00:27
3F:推 humanlin:原po高手 11/19 00:29
4F:→ maxcsh:哪有= =,比较疯狂而已,缠着助教缠到他们发现测资错误XD 11/19 00:30
5F:推 sn6783:原PO,神人也 11/19 00:37
6F:推 dennis2030:推原PO是头香强者! 有这篇帮助太棒了! 11/19 00:40
7F:推 jimmyken793:有强者快拜 11/19 00:51
8F:推 purplebleed:可以说一下哪几个错吗XD~~有怪怪的事情发生了~~ 11/19 01:04
9F:→ maxcsh:本来是1,2,3,10错啊,现在都修正了 11/19 01:05
10F:→ maxcsh:不过有被测资害到的应该只有我吧= =,多卡了一个半小时 11/19 01:13
11F:→ maxcsh:多补充一点东西,各位看看吧! 11/19 17:14
※ 编辑: maxcsh 来自: 140.112.242.90 (11/19 17:33)
12F:推 dennis2030:太专业了 补充过後又变得更强大了!! 11/19 17:33
13F:推 benck: 原PO是隐.强者 11/19 22:26
14F:推 fereshte: 原PO是隐.强者 11/19 22:48
15F:→ maxcsh:其实楼上两位才是真正的强者啊= =(修掉XD) 11/19 23:05
16F:推 chenaren:欸 那我的也要修(通通修掉XD) 11/19 23:40
※ 编辑: maxcsh 来自: 140.112.242.90 (11/19 23:43)
17F:推 purplebleed:有人可以提示一下4&&14的状况吗??(卡题了= =) 11/20 00:20
18F:→ maxcsh:Left 5 Right 5\ Start Left 5 Start Left 4 Target Left 3 11/20 00:33
19F:推 purplebleed:呵呵~~这种情形你早上跟我说过了XD 11/20 00:36
20F:→ maxcsh:哪有,不一样喔,拿去跑助教程式试试,会有warning, 11/20 00:37
21F:→ maxcsh:但还是要丢link code(那一串数字)进去喔! 11/20 00:38
※ 编辑: maxcsh 来自: 140.112.242.90 (11/20 00:40)
22F:推 purplebleed:哭~~~还是不给我过~~测资好阴= =||| <-标准耍无赖XXD 11/20 01:08
23F:推 purplebleed:喔YA~AC了!原来是1e-9~跟使徒三一样= =~~要记得呦 11/20 01:16
24F:→ purplebleed:花了好多时间呦= =~都在找白痴错误?(其实是我太笨了) 11/20 01:17
25F:→ maxcsh:啊我忘记讲了= =,我以为大家被唬过几次之後会自动加上去的 11/20 01:23
26F:→ maxcsh:很抱歉,补上了。 11/20 01:23
※ 编辑: maxcsh 来自: 140.112.242.90 (11/20 01:33)
27F:推 godgunman:欸欸你忘记感谢我啦XD 11/20 02:37
28F:→ maxcsh:感谢楼上在我不能用sscanf的时候教我用for loop切开XD 11/20 02:43
29F:推 purplebleed:呵呵~~楼上两位都是好人耶~~太感谢了XXD 11/20 09:34
30F:推 LoganChien:第 14 除了 1e-9 好像有和 13 一样的陷阱。(供参考) 11/20 18:34
31F:→ LoganChien:还有,我不太喜欢这一题的题目「说明」,太模糊了... 11/20 18:35
32F:→ LoganChien:还要从 test.exe/test2.exe 去猜题意...。 11/20 18:36
33F:推 LoganChien:有一些状况(不违反说明),也可以把 test.exe 玩坏。 11/20 18:40
34F:推 chenaren:我看不懂题目耶 @@ 11/20 19:11
35F:→ ewan7954:4*4矩阵目的==>旋转需要3*3 平移需要3*1 11/20 20:21
36F:→ ewan7954:所以为了使用上方便 将两个合并成4*4 11/20 20:22
37F:→ ewan7954:所以最下面那一行没用到 乘出来才变成 X Y Z 1 11/20 20:24
38F:→ ewan7954:今天助教课问的XD 11/20 20:31
39F:推 martinku:卡13、14呢...我有修正浮点数了说@@ 11/20 21:38
40F:推 LoganChien:楼上,你的 Warning 有问题 11/20 21:48
41F:推 LoganChien: 更正:MSG 11/20 22:04
42F:推 AfrikaBoi:请问测资4跟5还是字串的部分吗? 卡住了 :-( 11/22 01:29
43F:推 purplebleed:是矩阵运算~~~ 11/22 22:02
44F:推 AfrikaBoi:阿 OK 谢谢! 11/23 02:24
※ 编辑: maxcsh 来自: 140.112.242.90 (11/23 16:53)
45F:推 sn6783:感谢强者提醒~~ 我把0.000000001加上去之後马上多一分XD 11/23 16:58
46F:推 qq123789:请问 Left 0 Left 1 Left 1 算重复几次啊 总觉得答案有错 11/23 17:57
47F:推 qq123789:个人认为是一次 助教的 test2 档 是print 两次 11/23 18:00
48F:→ maxcsh:两次,接到Left 0的时候Left就已经被define了,所以是两次 11/23 18:08
49F:推 qq123789:了解 谢谢啦:) 11/23 18:10
50F:→ maxcsh:小提醒,矩阵做乘法前可能有需要改成单位矩阵, 11/23 18:12
51F:→ maxcsh:还有做乘法暂存的矩阵要记得归零喔! 11/23 18:12
52F:推 AfrikaBoi:卡11and13的人!第二行有复数欧! 11/24 14:03
53F:推 lch16:帮楼上更正一下..... 有负数 11/24 22:14
54F:推 rppo888:有复数也太惊悚....XDD 11/24 23:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP