Cho giá trị x và y là số nguyên dương cùng với giá trị n cho số chữ số thập phân, nhiệm vụ là thực hiện phép chia đến n chữ số thập phân.
Ví dụ
Đầu vào: x = 36, y = 7, n = 5 Đầu ra: 5.14285 Đầu vào: x = 22, y = 7, n = 10 Đầu ra: 3.1428571428
Phương pháp sử dụng trong chương trình dưới đây:
- Nhập giá trị a, b và n
- Kiểm tra nếu b = 0 thì phép chia vô hạn, nếu a = 0 thì kết quả là 0
- Nếu n > 1 thì lưu giá trị dư và trừ nó từ số bị chia, sau đó nhân kết quả cho 10. Bắt đầu vòng lặp tiếp theo
- In kết quả
THUẬT TOÁN
BẮT ĐẦU
Bước 1 → Khai báo hàm tính phép chia đến n chữ số thập phân
void compute_division(int a, int b, int n)
KIỂM TRA NẾU (b == 0)
In "Vô hạn"
KẾT THÚC
KIỂM TRA NẾU (a == 0)
In 0
KẾT THÚC
KIỂM TRA NẾU (n <= 0)
In a/b
KẾT THÚC
KIỂM TRA NẾU (((a > 0) && (b < 0)) || ((a < 0) && (b > 0)))
In "-"
Gán a = a > 0 ? a : -a
Gán b = b > 0 ? b : -b
KẾT THÚC
Khai báo và gán int dec = a / b
VỒNG LẶP VỚI int i = 0; i <= n; i++
In dec
Gán a = a - (b * dec)
NẾU (a == 0)
THOÁT
KẾT THÚC
Gán a = a * 10
Gán dec = a / b
NẾU (i == 0)
In "."
KẾT THÚC
KẾT THÚC VỒNG LẶP
Bước 2 → Trong main()
Khai báo và gán int a = 36, b = 7, n = 5
Gọi compute_division(a, b, n)
KẾT THÚC
Ví dụ mã nguồn
#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;
}
Kết quả đầu ra
5.14285