アンケート一覧ページでアンケートを探す

回答受付が終了しました

ID非公開

2023/11/13 17:58

1010回答

割り算演算子「/」を使用せずに,15を4で割ったときの商(整数値)を求めるプログラムを教えてください。

新機能 AI回答テストを実施中! テスト対象カテゴリ:歴史・悩み相談 ※回答がつかない場合は、画面のリロードをお試しください

回答(10件)

プログラム仕様の確認です。 >割り算演算子「/」を使用せずに,15を4で割ったときの商(整数値)を求める プログラムは、「正÷正」だけ計算しますか? 「15-商×4≧0」の式を満たす最大値として商を求める方法では、負値を含む割り算は計算できません。 負も扱うなら、「-15÷4」の答えは「商ー3、余り-3」ではなく、「商-4、余り1」という「余りは正」の数学条件を付けますか。

NEW! この回答はいかがでしたか? リアクションしてみよう

Wikipedia で語られている「最も原始的な方法」です。 https://ja.m.wikipedia.org/wiki/除法 >これらの商および剰余を求める最も原始的な方法は、引けるだけ引き算を行うことである。 (※ Wikipedia の最初の文の、ちょうど真ん中付近の文を引用) 以下のプログラムは私が書いたものです。 #include <stdio.h> int main() {    int a = 15;    int b = 4;    int sho = 0;    while( a >= b ) { // 引けるだけ        a -= b; // 引き算       sho ++;    }    printf( "%d\n", sho );    return 0; }

後から他の方々の回答を読みましたが皆さんほとんど同じようなプログラムを書いてますね。 みんなが同じプログラムを書くほど常識なんですかね…? わり算は引き算するのが常識、だなんて思ったことなかったけど…

#include <stdio.h> int div( int a , int b ) { int t,d; a -= a % b; b *= 2; t = 1; d = 0; while( a > 0 ) { if( a % b ) { d += t; a -= a % b; } t *= 2; b *= 2; } return(d); } void main() { printf( "%d\n" , div(15,4) ); }

除算命令は筆算のように計算できますが、これの処理にミスがあった初代Pentiumは特定の割り算の結果がおかしくなるためリコール騒ぎになりました。 CPU黒歴史 大損失と貴重な教訓を生んだPentiumのバグ https://ascii.jp/elem/000/000/757/757002/

答えが出そろっているので、補足だけ 実はCPUの内部でも割り算は引き算に、掛け算は足し算に変換しています 引き算は補数という技を使って足し算に変換できます つまり、コンピュータは足し算しかできません ものすごい高速で足し算ができるので実用的には問題は有りません