アプリ版:「スタンプのみでお礼する」機能のリリースについて

割り算(/)を使わずに加算(+)、減算(-)、乗算(*)のいずれかまたはは全てを使って割り算を行い、商と余りを求めるプログラムを作りたいのですが、どのようにしたらよいのでしょうか?

A 回答 (6件)

まず、単純に考えると、何回引けるかをループでぐるぐる回して引き算しながらカウントすれば、商と引けなくなったところで余りがもとまりますよね。


それだと、被除数が相対的に大きくなると大変なので、乗算によるシフト(例えば10倍して引けるなら10回引いたのと同じということですよね)をしてやればいいかと思います。
    • good
    • 1
この回答へのお礼

すごくシンプルで分りやすいです。ありがとうございました!!!!!!!!!

お礼日時:2005/11/15 18:03

基本的にはNo.3さんのおっしゃるとおり筆算ですね。


私からは2進数でやると効率的だというヒントを出しておきます。
まあ、桁を揃えたりする必要があるので実際には、加算(+)、減算(-)、乗算(*)の他に論理演算は必須だと思いますけど。
    • good
    • 0
この回答へのお礼

2進数ですか...難しいですね。でもやってみます。
皆さんの回答はどれも素晴しくて甲乙つけがたいのですが、
僭越ながら私にとって分かりやすかった順にポイントをつけさせていただきます。
回答して下さった皆さん、本当にありがとうございました。

お礼日時:2005/11/15 18:16

自信がないんですが、余りを出す方法は


7/2の場合
7 & (2^シフトする回数-1) =
7 & 1
でこれの結果が余りだと思います。
まぁ、これが正しくても2の倍数での割り算しか無理ですけど・・・。
商はzxczxczxcさんの方法でお願いします
    • good
    • 0
この回答へのお礼

ありがとうございました。早速やってみます。

お礼日時:2005/11/15 18:11

この質問の目的がわからないので役に立つかわかりませんが、


次のような手段を用います。

私は組み込み系のシステム開発をしておりプロセッサが貧弱なので除算が苦手です。少しでも処理時間を稼ぐために2の除算(余り計算も含む)では、ビットシフトや&演算子、|演算子を使います。

例 7÷2=3
-> 7 >> 1 = 111b >> 1 = 11b = 3

ちょっと意図と違うんだろうな。
    • good
    • 0
この回答へのお礼

かじってる程度なので、専門的なことは全然分からないんです。
説明不足で申し訳ありません...
回答して下さってありがとうございました。

お礼日時:2005/11/15 18:08

例えば…


2385648÷645 という計算を電卓などを使わずに
紙と鉛筆だけでする時、どんなやり方で計算しますか?
    ____
645 ノ 2385648

まずこんな風に書きますね。
645は3ケタなので、2385648の上3ケタの238を645と比較。
238の方が小さいので1ケタ増やし、2385÷645を考えます。
といっても頭の中で考えるのは割り算ではなく掛け算でしょう。
「645×4」…2385より大きくなりそうだから、
じゃあ「645×3」…=1935。
2385-1935=450これに2385の次のケタをくっつけて4506。
じゃあ4506÷645=・・・?

と、筆算だと使っているのは掛け算と引き算だけですね。


これと同じ考え方でプログラムを組んでみてはいかがでしょう?
実際のプログラムの記述はご自身で考えてくださいね。
    • good
    • 0
この回答へのお礼

なるほど!!!!!普段からしょっちゅう筆算で割り算しているのに、
掛け算と引き算だけしか使っていないなんて気付きませんでした...;
とても分りやすいです。ありがとうございました。

お礼日時:2005/11/15 17:59

A÷Bを求めるとして、


Bを十分に小さい値を初期値として定め、
B+B+B+B+…+Bという値をAと比較、
あるいはBを初期値から一定値ずつ上げていってB+BをAと比較、
不等号が<か>かを見極める判断(BASICならIF文とか)を加えて、とか、
かなり強引というかあほらしいやりかたはどうですか。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
やってみましたが、少し理解りにくいですね...
引き算でやった方がいいのでしょうか...?
ありがとうございました。

お礼日時:2005/11/15 17:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています