プログラミングの授業などでは、練習問題として「割り算(除算)」を「引き算(減算)」だけで再現するという課題を出題されることがあります。
本記事の内容はその課題の解き方についてです。
実際にプログラムを作成してみる
早速ですが、実際にプログラムを作成していきます。
プログラム作成の手順
プログラム作成の手順は以下の通りです。
- 除数aと被除数bに値を入力させる
- bからaの値を繰り返し引く(bの値がaの値よりも小さくなるまで)
- 2の処理を行った回数を商、2終了時のbの値を余りとする
※念のためループ処理に「For文を使う場合」と「While文を使う場合」で分けてプログラムを作成しようと思います。
実装例(For文を使用する場合)
上記の手順に従ってプログラムを作成します。
#include <stdio.h>
int main(void) {
/* 変数を定義する */
int a, b, q, r;
/* 被除数の入力を促す */
printf("Enter the dividend :\n");
scanf("%d", &b);
/* 除数の入力を促す */
printf("Enter the divisor :\n");
scanf("%d", &a);
/* 変数rにbの値を代入する */
r = b;
/* rからaの値を繰り返し引き、その度にqに1を加算する
rの値がaの値よりも小さくなったらループを終了 */
for(q=0; r>=a; q++){
r -= a;
}
/* 計算結果を出力する */
printf("Result :\n%d / %d = %d ... %d\n", b, a, q, r);
return 0;
このプログラムを実行すると以下の出力結果が得られます。
Enter the dividend :
100
Enter the divisor :
3
Result :
100 / 3 = 33 ... 1
特に問題なく処理が完了していることを確認できます。
実装例(While文を使用する場合)
上記の手順に従ってプログラムを作成します。
#include <stdio.h>
int main(void) {
/* 変数を定義する */
int a, b, q, r;
/* 被除数の入力を促す */
printf("Enter the dividend :\n");
scanf("%d", &b);
/* 除数の入力を促す */
printf("Enter the divisor :\n");
scanf("%d", &a);
/* 変数rにbの値を代入する */
r = b;
/* rからaの値を繰り返し引き、その度にqに1を加算する
rの値がaの値よりも小さくなったらループを終了 */
while(r >= a){
r -= a;
q++;
}
/* 計算結果を出力する */
printf("Result :\n%d / %d = %d ... %d\n", b, a, q, r);
return 0;
このプログラムを実行すると以下の出力結果が得られます。
Enter the dividend :
100
Enter the divisor :
3
Result :
100 / 3 = 33 ... 1
こちらも特に問題なく処理が完了していることを確認できます。
おすすめの記事
本記事を読まれた方には、以下の記事もおすすめします。
【中・上級者への道!】C言語の次に勉強するべきプログラミング言語は何?【オススメは○○】