2013年7月18日 星期四

[UVA]Summing Digits

CPE 10473、UVA 11332程式解題。
































解題觀念:



這題的精華就只有一個-字串轉整數、整數轉字串

轉來轉去,加一加答案就出來了~

題目說明要將一串數字個別相加,當數字只剩下一位數字的數值時,那就是答案了。

因為是要將一串數字個別相加,所以需要規劃格子將數字定位以便於計算。這樣就可以用抓字元的方式抓出數字,這就是為何要用字串存放的原因,


這裡需要用到雙層迴圈。
一個控制字串長度,當字串長度等於1時,即印出答案。另一個控制計算,將數字個別相加。
(詳情看EX。)



解題步驟:

先宣告變數a存放字串,在宣告一個b字元變數等等會用到。

題目有說當輸入為0時,等於測資結束,所以要加一個if判斷式,判斷字串是否為0

之後設定while迴圈,當字串長度還是大於1時,繼續for迴圈的計算。

for迴圈,將字串的數字一個一個抓出來,每抓一個字元就轉成整數,之後加到count

將相加的結果從整數型態再轉回字串存放到a

印出。



EX:

範例測資 11。

輸入11,存放到字串a => 判斷是否為0,不符合 => 進入while迴圈,字串長度大於1 。

進入for迴圈計算,抓位置為第0個位置的字元=1轉為整數,加到count=1,

之後抓第1個位置的字元=1轉為整數,加到count=2 。

將count=2從整數型態轉回字串存放到a=2。

字串長度為1,跳出while迴圈,印出字串a。

BY 小K






沒有留言:

張貼留言