20180123-Int2str

#心得 #int_to_str #ascii

  1. 如果函式要回傳string (return str),函式的前面必須寫成char *() {}。

  2. 圖片中

str[i++] = (num % 10) + ‘0’; 後面要有+‘0’,因為0在ascii裡面是代表30(16進位),若沒有寫會變成ascii前面10個的特殊指令。

不過我這樣寫數字會反轉。

————我是分隔線————

如果看到這邊覺得很複雜的話其實還有更簡單的方法:

就是使用sprintf

例如:

int n;

char buffer[100];

sprintf(buffer,"%d", n);

這樣就可以把n(int)轉成buffer(character array)

可以參考:http://www.cplusplus.com/reference/cstdio/sprintf/

Ref

20180119-Hackmd

#分享 #HackMD

最近找到個蠻有趣的東西 - “HackMD” 這可以寫共同筆記之類的。我覺得有時我們資訊一直丟上來有天可能會太雜,除了丟新想法或解題外,整理也是很重要的。因此我建了個HackMD 讓大家可以來共同做筆記。

網址:https://hackmd.io/s/rkkRiKyrf

註:右上角有個鉛筆符號,點下去可以編輯。

Ref

20171221-Uva10190

#Debug #遞迴 #等比數列 #除錯 #PART2 #10190

接續上次找等比級數的程式

情況:

我後來發現瘋狂程設會當機,

因此我再去開命令列檢查錯誤訊息

出現:Floating point exception

問題:

當我輸入的y是0時,x%y不能計算,因此出現此錯誤

解決方法:

一開始要判斷輸入值是否可作計算(紅色那行)

https://i.imgur.com/8uO9jJ2.jpg

Ref

20171219-Recursion

#心得 #除錯 #遞迴 #等比數列 #PART1

情況:

想試著用遞迴的方式來檢查是否輸入兩數可以寫成等比數列。

Ex:

input: 125 5

output:true 125 25 5 1

input: 10 3

output:false

敘述:

原本一直出現 segmentation fault,後來加上紅色註解的下一行就過。

原因:

1234 / 321 = 3

3 / 321 = 0

0 /321 = 0

他會一直呼叫自己,導致無限呼叫(沒有回傳)

導致記憶體超出配置範圍

結論:

寫遞迴真的條件要想的很清楚,要不然會發生很可怕的結果😂

https://i.imgur.com/lhoPFft.jpg

Ref

0%