小数点以下n桁までの割り算を計算するC++プログラム
正の整数 x と y、および小数点以下の桁数 n が与えられたとき、割り算の結果を小数点以下 n 桁まで求めるのが本記事の目的です。
実行例
入力:x = 36, y = 7, n = 5 出力:5.14285 入力:x = 22, y = 7, n = 10 出力:3.1428571428
プログラムで使用するアプローチ
- a(被除数)、b(除数)、n(小数点以下の桁数)の値を入力として受け取る
- b が 0 の場合は除算が無限に続くため「Infinite」と表示する。また、a が 0 の場合は何を割っても結果は 0 になるため「0」と表示する
- n が 1 より大きい場合は、余りの値を保持し、被除数からその分を引いた後、結果を10倍して次の反復処理へ進む
- 最終的な結果を出力する
アルゴリズム
START
Step 1→ 小数点以下 n 桁までの除算を計算する関数を宣言する
void compute_division(int a, int b, int n)
IF (b == 0) をチェック
「Infinite」を表示
End
IF (a == 0) をチェック
「0」を表示
End
IF (n <= 0) をチェック
a / b を表示
End
IF (((a > 0) && (b < 0)) || ((a < 0) && (b > 0))) をチェック
「-」を表示
a = a > 0 ? a : -a と設定
b = b > 0 ? b : -b と設定
End
int dec = a / b を宣言・設定
FOR (int i = 0; i <= n; i++) ループ
dec を表示
a = a - (b * dec) と設定
IF (a == 0)
break
End
a = a * 10 と設定
dec = a / b と設定
IF (i == 0)
「.」を表示
End
End
Step 2→ main() 内で
int a = 36, b = 7, n = 5 を宣言・設定
compute_division(a, b, n) を呼び出す
STOPサンプルコード
#include <bits/stdc++.h>
using namespace std;
void compute_division(int a, int b, int n) {
if (b == 0) {
cout << "Infinite" << endl;
return;
}
if (a == 0) {
cout << 0 << endl;
return;
}
if (n <= 0) {
cout << a / b << endl;
return;
}
if (((a > 0) && (b < 0)) || ((a < 0) && (b > 0))) {
cout << "-";
a = a > 0 ? a : -a;
b = b > 0 ? b : -b;
}
int dec = a / b;
for (int i = 0; i <= n; i++) {
cout <<dec;
a = a - (b * dec);
if (a == 0)
break;
a = a * 10;
dec = a / b;
if (i == 0)
cout << ".";
}
}
int main() {
int a = 36, b = 7, n = 5;
compute_division(a, b, n);
return 0;
}出力結果
5.14285
このプログラムでは、筆算と同じ考え方を使って小数点以下の桁を順番に求めています。まず整数部分を計算し、その後は余りを10倍しながら商を繰り返し求めることで、指定した桁数 n までの結果を正確に出力できます。浮動小数点型を使用しないため、double 型では表現できないような長い桁数の計算でも誤差なく処理できる点が大きな特徴です。
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余
-
C++で2進数を10進数に変換するプログラムの作り方
2進数が入力として与えられたとき、その2進数を10進数へ変換するのが本記事のテーマです。 コンピュータにおける10進数は基数10で表現されます。一方、2進数は基数2で表現され、使用するのは0と1という2つの数字だけです。それに対して10進数では、0から9までの任意の数字を扱うことができます。 2進数を10進数に変換するには、右端の桁から順に各桁の数字を取り出し、2のべき乗(0乗から始まり、桁数-1乗まで1ずつ増加)を掛け合わせます。そして、その掛け算の結果をすべて足し合わせることで、最終的な10進数の値が求まります。 以下は、2進数を10進数に変換する流れを図で表したものです。 具体例 入