看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Code Block 寫了一個可以簡易運算 大數 的code 功能只有 + - * 且 還沒有處理負數的功能 一開始寫的版本 只能執行一次運算後 結束 功能都可以正常運行 加法:http://ppt.cc/993H 減法:http://ppt.cc/od1e 乘法:http://ppt.cc/mt~m 一旦我改成可以連續輸入 乘法功能就怪怪的 http://ppt.cc/yY8Y 可以看到 除了第一次輸入的乘法功能正常 其他乘出來結果都是錯的 (+ - 兩個正常) 還有的時候 第一次輸入 就當掉..... 原始 code : http://codepad.org/v3HK3FCx 連續輸入code : http://codepad.org/El9HSAtS 兩者只差 184行的 while(1) 迴圈 簡單說明一下 code : 4~23行 配合 190行輸入 因為不知道會輸入多大的資料 所以我就用malloc 24~63 加法的函式 64~100 減法的函式 102~160 乘法的函式 161~179 將結果印出來的函式 196~207 防呆 (or 194~205) 我處理乘法的辦法: 假設要算的是 123456789 * 21 好了 我先將 123456789 從右到左開始算 所以我先分出9 8 7 6 5 4 3 2 1 轉成數字存入 num0 一樣也是右到左 所以num[0] = 1 num[1] = 2 這樣 接下來再切21 分出 1 轉成數字後 再去相乘 num0的每個數字 放入專存結果的陣列 再算2 與1乘出來的結果相加 最後在一次進位 主要概念是參考這個 http://ppt.cc/kxmB 我自己有嘗試印出值 看過程 但我不懂為何印出很大的數字 (9*9最大也才81 怎麼可能乘出84571 諸如此類的數字) 還麻煩各位大大 幫忙找出問題所在 是我邏輯錯誤 ?函式寫錯?想的不夠周全? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.240.33 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428770401.A.2A1.html
a90310609: 全部的memset的size不對,多乘sizeof(int) 04/12 21:41