Re: [問題] 大數加法的問題

看板C_and_CPP作者 ( )時間15年前 (2010/06/18 07:38), 編輯推噓6(6013)
留言19則, 6人參與, 最新討論串5/5 (看更多)
1.處理0的問題 可以用旗標的方式 #include<stdio.h> int main(void) { int iFlag,iHelp; int iSum[10]={0,0,0,0,0,0,5,6,7,8} iFlag=0; for(iHelp=0;iHelp<10;iHelp++) { if(iSum[iHelp]!=0) iFlag=1; if(iFlag==1) { printf("%d",iSum[iHelp]); } } } 或是用長度 比如我輸入5678+10000 因為10000 的長度較長等於5 那麼就從100-5-1=94開始輸出 int iLength1,iLength2,iLength; iLength1=strlen(cInput1); iLength2=strlen(cInput2); if(iLength1>iLength2) iLength=iLength1; else iLength=iLength2; //如果兩個位數相加有進位 那麼輸出 否則不要輸出 if(iSum[LEN-iLength-1]!=0) printf("%d",iSum[LEN-iLength-1); for(iHelp=LEN-iLength;iHelp<LEN;iHelp++) { printf("%d",iSum[iHelp]); } 比較起來 第一個方法似乎比較好 2.處理小數 int iInput; scanf("%d",&iInput); printf("%d",iInput); 如果你輸入123.456 電腦還是會輸出123 因為你宣告iInput為整數 所以小數的部份是不會讀進去的 會自動轉型 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.226.245

06/18 15:52, , 1F
0的部份解決了 小數的部份 我想設計讓他 不計算
06/18 15:52, 1F

06/18 15:53, , 2F
就是我只要輸入小數 就中止程式 或著印出 輸入錯誤
06/18 15:53, 2F

06/18 15:56, , 3F
我不太確定有沒有判斷小數的函式 不過你可以用float讀入
06/18 15:56, 3F

06/18 15:57, , 4F
然後在轉換乘int 如果兩者相等代表沒有小數
06/18 15:57, 4F

06/18 16:07, , 5F
意思是說做int跟float轉int然後判斷有沒有相等嗎?
06/18 16:07, 5F

06/18 16:17, , 6F
int n = (int) floor(f);
06/18 16:17, 6F

06/18 16:40, , 7F
轉成浮點數時好像一定會跑掉
06/18 16:40, 7F

06/18 16:40, , 8F
就算輸入整數c轉i不會等於c轉f轉i
06/18 16:40, 8F

06/18 18:37, , 9F
其實我覺得要加一個處理溢位的XDD
06/18 18:37, 9F

06/18 18:37, , 10F
要不然進位後大於LEN就炸了
06/18 18:37, 10F

06/18 19:04, , 11F
如果用字串讀入,不是可以判斷小數點?
06/18 19:04, 11F

06/18 19:30, , 12F
跟樓上b大有同樣的疑問....
06/18 19:30, 12F

06/18 20:05, , 13F
可以判斷沒錯..可是基準點就變小數點 不是最右邊的
06/18 20:05, 13F

06/18 20:05, , 14F
也就是演算法要重寫
06/18 20:05, 14F

06/18 20:28, , 15F
原發問者是收到小數就中止印個錯誤, 這不用動演算法吧.
06/18 20:28, 15F

06/18 23:16, , 16F
可以請教V大要如何修改嗎?
06/18 23:16, 16F

06/18 23:36, , 17F
怎麼修改? 我現在也不知道你的code最後長什麼樣子啊?
06/18 23:36, 17F

06/18 23:36, , 18F
反正你要處理大數, 會先把整串文字讀進某個char array裡
06/18 23:36, 18F

06/18 23:38, , 19F
在所有處理前先把那array掃過一遍看有沒有'.'出現就是啦
06/18 23:38, 19F
文章代碼(AID): #1C6o9PKq (C_and_CPP)
文章代碼(AID): #1C6o9PKq (C_and_CPP)