[掲示板へもどる]

[No.335] はじめまして 投稿者:バッテラ  投稿日:2004/09/23(Thu) 05:25
[関連記事

昨日、突発的にプログラミングを覚えようと思ってしまい、
超初心者でもわかりやすいページはないかと探しまわっていて
こちらにたどり着きました。printfから始めたところです(笑)
 こちらの「C言語勉強コーナー」は、ソースにカラーで説明が
あって見やすく、参考にさせて頂きたいと思います。
 ただ一つ気になったのが、「【int】整数型変数宣言割り算について」
のページで、剰余10%20のサンプル の出力結果が10と出ているのが
おかしいと言われているので、おや?と思いました。
10÷20=0あまり10
となるので、出力結果が10で正しいのではないでしょうか?
昨日はじめたばかりの奴の指摘で失礼かとは思いますが、
整数は0と自然数とそのマイナス(−)の数なので
小数点以下は処理的にも扱わないと思います。
たとえば、実数では10÷3=3.3333…ですが、整数のみだと
10÷3=3あまり1 で10%3の結果は1
で、3÷3=1あまり0 で3%3の結果は0
となると思います。
 既にずいぶん先に進まれているようなので、気にされていないと
思いますが…。
 あいさつもそこそこに長文にてこのような書き込みをしてすみません。
これから勉強を進めていくたびに、参考にさせていただきます。よろしくお願いしますm(__)m


[No.336] Re: はじめまして 投稿者:あかかげまる  投稿日:2004/09/23(Thu) 13:00
[関連記事

バッテラさん初めまして(^^)
私もまだprintf以外にまともに使える関数がまだ有りません(^^;
ご指摘の余りを求める計算に付いては、私が整数について理解出来ていなかった為です。
整数剰余の求め方は
http://docs.hp.com/ja/B3906-90007/ch02s05.html#nwvjf344haas
-----------------------------
2.5.3 剰余演算
剰余演算は、誤差のない剰余機能です。ゼロでないyに対して、剰余r = remainder(x, y)は、次のように定義されます。

r = x - y * n

ここでnは、x/yの正確な値に最も近い整数です。|n - x/y| = 1/2の場合、nは偶数となります。rがゼロの場合、その符号はxの符号と同じになります。

次に例を2つ挙げます。

1.6/2.0の結果に最も近い整数は1です。従って、1.6と2.0の剰余は、1.6 - (2.0 * 1)、すなわち-0.4となります。

5.0/2.0の結果に最も近い整数は2です (正しい結果は、2と3の中間値になるので、nは偶数になります)。5.0と2.0の剰余は、5.0 - (2.0 * 2)、すなわち 1となります。

剰余演算の結果は、丸めモードの影響を受けません (結果は常に正確であり、丸めは演算結果に関係しません)。

-----------------------------

という事であっていますでしょうか?

まだ理解出来ていないので外しているかもです(^^;
一様自分なりに理解した範囲では

6÷6=1 余り0
6÷7=0.8571 整数余り= 6-(7*0)余り6
1÷3=0.3333 整数余り= 1-(3*0)余り1
145÷9=16.111 整数余り= 145-(9*16)余り1
通常の数学理論で求める結果の近い数字nを求め
余りr = x - y * n
と言うことでいいんですよね(^^;;;
このような計算方法があるとは・・
ますますC言語がわからなくなってしまいました(涙
ご教授有難うございました(^^)


[No.337] Re^2: はじめまして 投稿者:あかかげまる  投稿日:2004/09/23(Thu) 18:47
[関連記事

> バッテラさん初めまして(^^)
> 私もまだprintf以外にまともに使える関数がまだ有りません(^^;
> ご指摘の余りを求める計算に付いては、私が整数について理解出来ていなかった為です。
> 整数剰余の求め方は
> http://docs.hp.com/ja/B3906-90007/ch02s05.html#nwvjf344haas
> -----------------------------
> 2.5.3 剰余演算
> 剰余演算は、誤差のない剰余機能です。ゼロでないyに対して、剰余r = remainder(x, y)は、次のように定義されます。
>
> r = x - y * n
>
> ここでnは、x/yの正確な値に最も近い整数です。|n - x/y| = 1/2の場合、nは偶数となります。rがゼロの場合、その符号はxの符号と同じになります。
>
> 次に例を2つ挙げます。
>
> 1.6/2.0の結果に最も近い整数は1です。従って、1.6と2.0の剰余は、1.6 - (2.0 * 1)、すなわち-0.4となります。
>
> 5.0/2.0の結果に最も近い整数は2です (正しい結果は、2と3の中間値になるので、nは偶数になります)。5.0と2.0の剰余は、5.0 - (2.0 * 2)、すなわち 1となります。
>
> 剰余演算の結果は、丸めモードの影響を受けません (結果は常に正確であり、丸めは演算結果に関係しません)。
>
> -----------------------------
>
> という事であっていますでしょうか?
>
> まだ理解出来ていないので外しているかもです(^^;
> 一様自分なりに理解した範囲では
>
> 6÷6=1 余り0
> 6÷7=0.8571 整数余り= 6-(7*0)余り6
> 1÷3=0.3333 整数余り= 1-(3*0)余り1
> 145÷9=16.111 整数余り= 145-(9*16)余り1
> 通常の数学理論で求める結果の近い数字nを求め
> 余りr = x - y * n
> と言うことでいいんですよね(^^;;;
> このような計算方法があるとは・・
> ますますC言語がわからなくなってしまいました(涙
> ご教授有難うございました(^^)

バッテラさんこんばんわ。(^^)
一応今日テストしまくって見たのですが、、
上記の式に小数点以下を切り捨てたものをあてはめて剰余を計算してみたところ全て上手く謎が解けました。
バッテラさんのご指摘がなければ永遠に判らなかったと思います。(^^;
早速ページの方に訂正を入れてアップさせていただきました。
本当に有難うございます。(^^)


[No.339] Re^3: はじめまして 投稿者:バッテラ  投稿日:2004/09/23(Thu) 23:36
[関連記事

こんばんわ。なんだか式に直すとややこしいですね(^_^;)
自分の中では「小学校で習ったあまりの出る割り算
(と小数点がある場合はその応用)」程度に考えていたので
ちゃんとした式にされて、こちらもすっきりしました(笑)


[No.341] Re^4: はじめまして 投稿者:あかかげまる  投稿日:2004/09/24(Fri) 00:26
[関連記事

> こんばんわ。なんだか式に直すとややこしいですね(^_^;)
> 自分の中では「小学校で習ったあまりの出る割り算
> (と小数点がある場合はその応用)」程度に考えていたので
> ちゃんとした式にされて、こちらもすっきりしました(笑)
バッテラさんこんばんわ(^^)
いや〜思い出しました・・(汗
小学校で習う算数の分数ですよね(^^;;
基本中の基本を忘れてしまっているとは、、反省するばかりです。
ものすごく納得できました(^^)