- ベストアンサー
c言語のプログラムです
2つの生の整数の割り算a÷bはaからbを繰り返し引いていき、引くことが出来なくなるまでの回数を商、その時の残りを剰余をすることで、引き算だけを用いて実現することができる。このことを考慮して、while文と引き算だけを用いて割り算を実現しなさい。という問題なんですけどどのようにプログラムを作っていいやらわかりません 一様ヒントはあります ・変数としては、入力する二つの整数に対応する変数m,n、商に対応する変数q、剰余に対応する変数rを使うとよいでしょう。すべて整数ですのでintで宣言する。 皆さんのご協力お願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#include <stdio.h> int main(int argc, char* argv[]) { int m; int n; int q = 0; int r = 0; /*Aを入力する*/ printf( "\nA=" ); scanf( "%d", &m ); /*入力チェック*/ if( 0 > m ) { printf( "\ninvalid input!\n" ); return -1; } /*Bを入力する*/ printf( "\nB=" ); scanf( "%d", &n ); /*入力チェック*/ if( 0 > n ) { printf( "\ninvalid input!\n" ); return -1; } else if( !n ) { printf( "\n0 division!!\n" ); return -2; } /*A<BになるまでA-Bを繰り返す*/ while( m >= n ) { m = m - n; ++q; } r = m; printf( "\nA/B=%d...%d\n", q, r ); return 0; }
その他の回答 (3)
- KEIS050162
- ベストアンサー率47% (890/1879)
基本中の基本なので、テキストを良く見ながら、下記のヒント(ジェネラルフロー)を頼りに組んでみてください。 考え方は、被除数から引けなくなるまで除数を繰り返し引いていき、何回引けたかが商、引けなくなった時の被除数が剰余になる、ということです。 ジェネラルフローだとだいたい下記の様な流れになります。(剰余のrは使わなくても出来ますが、下記の例は被除数mを保存する方法で記述しています。) ・m,n,r,q をintで定義して、0で初期化する。 (m:被除数、n:除数、q:商、r:剰余) ・m、nを入力させる。 ・r = m ・r > n である間下記を繰り返し実行する。 ・r = r - n (被除数から除数を一回引いて、引いた余りをまた被除数とする) ・q = q + 1 (何回引けたかを数える) ・商 r 、 剰余 q を表示する。 余力があったら、除数に0を入れた時、エラーとするか再度入力させるかなど入れてみるのも良いでしょう。 ご参考に。
- take0_0
- ベストアンサー率46% (370/804)
whileの働きはわかりますか? 条件が成立する間繰り返すんですよね。 で、条件って何? まだ引くことができるかどうかですよね。 繰り返す内容って何? 引き算ですよね。 さあ、やってみよう! 答えを書いても仕方無さそうなので、考えてみましょう。 全く身につける気が無いのなら、そう書いてみるのも良いかも。
- asuncion
- ベストアンサー率33% (2127/6289)
手で計算するとき、どういう風にしますか? プログラミングとは、突き詰めていうと手計算の手順をコードに落とし込むことです。 ところで、 >生の整数 正の整数、のことですか? >一様ヒントはあります 一応(いちおう)ヒントはあります、のことですか?
補足
自分でも考えてみましたけど 繰り返しのとこがわかりませんでした どんな感じか教えてください