ページ 11

数学?

Posted: 2009年7月16日(木) 10:53
by マルチネス
こんにちは、いつもお世話になっています。

今回の質問は、文字列の"1234"を整数値に変換したいのですが、
1234
= 1 * 1000 + 2 * 100 + 3 * 10 + 4
=(((0 + 1) * 10 + 2) * 10 + 3) * 10 + 4 ----①

この①の展開の仕方が分かりません。
とても、馬鹿らしい質問とは思うのですが、よろしくお願いします。

Re:数学?

Posted: 2009年7月16日(木) 11:06
by ねこ
char cTemp[64] = "1234"
int iTemp = atoi( cTemp );
これじゃ駄目なの?
1文字ずつ解析して変換せよ、とか条件あるのかな。

Re:数学?

Posted: 2009年7月16日(木) 11:07
by Blue
"1234" を先頭から一文字ずつ見る。

1文字目
'1' → 数値に変換 → 1 ・・・①

2文字目
'2' → 数値に変換 → 2
→ ①の結果と合わせる → ひと桁上なので①の結果を10倍して足す
→ ① * 10 + 2・・・②

3文字目
'3' → 数値に変換 → 3
→ ②の結果と合わせる → ひと桁上なので②の結果を10倍して足す
→ ② * 10 + 3・・・③

4文字目
'4' → 数値に変換 → 4
→ ③の結果と合わせる → ひと桁上なので③の結果を10倍して足す
→ ③ * 10 + 4・・・④

④を展開すると
((1 * 10 + 2) * 10 + 3) * 10 + 4
となる。

①が(0 + 1)になるのは
> → Xの結果と合わせる → ひと桁上なのでXの結果を10倍して足す
の X が一番最初なので 0 ということにすると
①は (0 * 10 + 1) = (0 + 1) となる。

Re:数学?

Posted: 2009年7月16日(木) 11:13
by non
昔、同じような投稿がありました。
参考になれば
ttp://www.play21.jp/board/formz.cgi?action=res&resno=28948&page=&lognum=90&id=dixq&rln=29064

Re:数学?

Posted: 2009年7月19日(日) 07:53
by SCI
ホーナー法による多項式計算の応用ですね。

Re:数学?

Posted: 2009年7月19日(日) 09:24
by box
> 1234
> = 1 * 1000 + 2 * 100 + 3 * 10 + 4
> =(((0 + 1) * 10 + 2) * 10 + 3) * 10 + 4 ----①

1234
= 1230 + 4
= 123 * 10 + 4
= (120 + 3) * 10 + 4
= (12 * 10 + 3) * 10 + 4
= ((10 + 2) * 10 + 3) * 10 + 4
= ((1 * 10 + 2) * 10 + 3) * 10 + 4
= (((0 + 1) * 10 + 2) * 10 + 3) * 10 + 4

これで理解できますか?