Re: [問題] 程式碼大量重複卻不知如何解決

看板Programming作者 (可愛小孩子)時間6年前 (2017/10/19 00:16), 編輯推噓3(3023)
留言26則, 2人參與, 6年前最新討論串2/2 (看更多)
完整 code: http://codepad.org/ySeXRSbF 關鍵部份: if( (s[i] >= 'A' and s[i] <= 'Z') || (s[i] >= 'a' and s[i] <= 'z') ){ char ch = (s[i] <= 'Z') ? 'A' : 'a'; s[i] = (s[i] + k - ch) % 26 + ch; } ※ 引述《woody3724 (woody)》之銘言: : 給一個字串,若遇到字母,則依照字母順序將它改成 k 個字母後的字母,且不改變大小寫 : 若超過 Z/z 則回頭從A/a算起 且 k 必定大於 0 且小於等於 9 : 附上26個字母讓大家方便查詢 : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : 例如字串為 x3W4jO/a 且 k = 6 則改成 d3C4pU/G : 我的寫法:https://i.imgur.com/XBIdN7s.jpg
: 但是第 3~7 行 與 9~13 行重複性太高了,根本只差在第5行的 'Z' 與第11行的 'z' : 因此我改成 https://i.imgur.com/T4YPD3L.jpg
: 但明顯是錯的,原因在23~26行的註解 : 不知道各位有沒有漂亮的寫法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.48.185 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1508343369.A.7FA.html

10/19 02:32, 6年前 , 1F
你的解法有錯誤
10/19 02:32, 1F

10/19 02:32, 6年前 , 2F
你的解法
10/19 02:32, 2F

10/19 02:32, 6年前 , 3F

10/19 02:32, 6年前 , 4F
測試方式
10/19 02:32, 4F

10/19 02:32, 6年前 , 5F

10/19 02:32, 6年前 , 6F
測試結果
10/19 02:32, 6F

10/19 02:32, 6年前 , 7F

10/19 07:10, 6年前 , 8F
我覺得錯的是你自己寫的function耶
10/19 07:10, 8F

10/19 07:10, 6年前 , 9F
怎麼會輸出"\x80"
10/19 07:10, 9F

10/19 08:00, 6年前 , 10F
那是gtest輸出的結果
10/19 08:00, 10F

10/19 08:00, 6年前 , 11F
我一開始用if也是有測到不會過
10/19 08:00, 11F

10/19 08:04, 6年前 , 12F
所以你覺得輸出"f3E4r0/i"是錯的結果嗎
10/19 08:04, 12F

10/19 08:16, 6年前 , 13F
'x'的十六進位值是78 加上8變成80 會overf
10/19 08:16, 13F

10/19 08:16, 6年前 , 14F
low 應該是你沒有判斷到吧 輸出'f'應該才
10/19 08:16, 14F

10/19 08:16, 6年前 , 15F
是正確的結果
10/19 08:16, 15F

10/19 08:33, 6年前 , 16F
我左邊用原原po的程式
10/19 08:33, 16F

10/19 08:33, 6年前 , 17F
我等等查qq
10/19 08:33, 17F

10/19 08:37, 6年前 , 18F
原原po的程式判斷有沒有大於'z' 可是這時s
10/19 08:37, 18F

10/19 08:37, 6年前 , 19F
[i]的值因為overflow變成負的 所以if不成
10/19 08:37, 19F

10/19 08:37, 6年前 , 20F
立 結果就錯了
10/19 08:37, 20F

10/19 08:40, 6年前 , 21F
第一支嗎?
10/19 08:40, 21F

10/19 08:46, 6年前 , 22F
看來是原原po的函式在k=8, 9的時候都會
10/19 08:46, 22F

10/19 08:46, 6年前 , 23F
溢位,我的錯
10/19 08:46, 23F

10/19 08:46, 6年前 , 24F
c大程式才是對的
10/19 08:46, 24F

10/19 08:52, 6年前 , 25F

10/19 08:52, 6年前 , 26F
完整程式
10/19 08:52, 26F
文章代碼(AID): #1Pvtv9Vw (Programming)
文章代碼(AID): #1Pvtv9Vw (Programming)