[問題] 基本大數加法

作者: wayne4125 (疤痂灸)   2017-08-21 20:20:45
開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
dev c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
小弟初學C語言,實作基本的大數加法,得出錯誤後想了很久還是沒有頭緒哪裡錯
rev函數將字串反轉
minus 和 add 將字串裡的資料減或加 '0' 再運算
還請大神們指點迷津
餵入的資料(Input):
兩正整數
預期的正確結果(Expected Output):
相加的數字
錯誤結果(Wrong Output):
有時是亂碼,大部分數字錯誤
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/GDrFZFxD
補充說明(Supplement):
作者: jerryh001   2017-08-21 20:40:00
假設你做12345+67 找你這樣寫會變12345+???67 ?表示一個不知道的垃圾值*照你這樣寫
作者: stucode   2017-08-21 20:43:00
變數沒有初始化 初值不會是0更不會是'0'另外進位似乎多加一次
作者: wayne4125 (疤痂灸)   2017-08-21 20:45:00
那要怎麼初始化呢 有點爬不到答案s大 c[i+1] +=1 想幫最高位+1 其他狀況應該不會多加char c[100]={'0'} 也不會對 QQ
作者: stucode   2017-08-21 20:51:00
可用迴圈或memset 初始化語法好像只能手動填'0'
作者: wayne4125 (疤痂灸)   2017-08-21 20:53:00
真的!! 謝謝s大 :)但是輸入2999 1 會甚麼都沒有出現欸 QAQ
作者: stucode   2017-08-21 21:00:00
仔細看這個做法還蠻有問題的 c中的0同時代表數字0及'\0'所以rev等函數的運作會出問題
作者: wayne4125 (疤痂灸)   2017-08-21 21:02:00
無法正確讀取數字長度 所以會亂掉大概知道問題點了 再改善程式看看 謝謝:D
作者: alan23273850   2017-08-22 02:03:00
路過回個,順便提醒一下雖然初學的時候大數加法習慣上會以digit為單位,但是這樣每次只會處理到一位數,在效率上不夠優,熟悉之後建議可以int為單位,也就是一次以差不多10^10為單位,運算上會快很多然後也可以避免掉字串處理常出現的bug,只能說字元單位或int單位都各自有其優缺,可斟酌選擇
作者: wayne4125 (疤痂灸)   2017-08-22 14:13:00
是的! 多謝指教^^
作者: ddchris (克里斯)   2017-08-28 23:55:00
可參考 http://www.tcgs.tc.edu.tw/~sagit/cpp/q10.htm網站寫得蠻詳細的喔

Links booklink

Contact Us: admin [ a t ] ucptt.com