Cho bán kính và chiều cao của bình nước hình trụ, số lượng 'n' quả cầu rắn hình cầu cùng bán kính, và thể tích nước trong bình. Nhiệm vụ là kiểm tra xem bình có bị tràn hay không khi nhúng các quả cầu vào trong.
Công thức tính thể tích
Hình trụ
3.14 * r * r * h
Trong đó, r là bán kính bình, h là chiều cao bình
Hình cầu
(4/3) * 3.14 * R * R * R
Trong đó, R là bán kính quả cầu
Đầu vào
chieu_cao_binh = 5, ban_kinh_binh = 2, the_tich_nuoc = 10, suc_chua = 10, ban_kinh_cau = 2
Đầu ra
Sẽ bị tràn
Phương pháp tiếp cận
- Nhập các kích thước cho trước: bán kính bình, chiều cao bình, số quả cầu cần nhúng, bán kính quả cầu
- Tính dung tích (thể tích) của bình bằng công thức hình trụ
- Tính thể tích một quả cầu bằng công thức hình cầu
- Tính thể tích nước sau khi nhúng cầu (thể tích nước ban đầu + thể tích các quả cầu)
- Tính tổng thể tích = thể tích nước + thể tích các quả cầu
- Kiểm tra điều kiện tràn:
- Nếu tổng thể tích > dung tích bình → bình sẽ tràn
- Nếu tổng thể tích ≤ dung tích bình → bình sẽ không tràn
Thuật toán
Bước 1 → Khai báo hàm kiểm tra tràn:
void kiemTra Tran(int H, int r, int h, int N, int R) {
float dungTichBinh = 3.14 * r * r * H;
float theTichNuoc = 3.14 * r * r * h;
float theTichCau = N * (4.0 / 3.0) * 3.14 * R * R * R;
float tongTheTich = theTichNuoc + theTichCau;
if (tongTheTich > dungTichBinh)
cout << "Sẽ bị tràn";
else
cout << "Không bị tràn";
}
Bước 2 → Trong main():
int chieuCaoBinh = 5, banKinhBinh = 2, theTichNuoc = 10, sucChua = 10, banKinhCau = 2;
kiemTraTran(chieuCaoBinh, banKinhBinh, theTichNuoc, sucChua, banKinhCau);
Ví dụ mã nguồn
#include <bits/stdc++.h>
using namespace std;
void kiemTraTran(int H, int r, int h, int N, int R) {
float dungTichBinh = 3.14 * r * r * H;
float theTichNuoc = 3.14 * r * r * h;
float theTichCau = N * (4.0 / 3.0) * 3.14 * R * R * R;
float tongTheTich = theTichNuoc + theTichCau;
if (tongTheTich > dungTichBinh) {
cout << "Sẽ bị tràn";
} else {
cout << "Không bị tràn";
}
}
int main() {
int chieuCaoBinh = 5, banKinhBinh = 2, theTichNuoc = 10, sucChua = 10, banKinhCau = 2;
kiemTraTran(chieuCaoBinh, banKinhBinh, theTichNuoc, sucChua, banKinhCau);
return 0;
}
Kết quả chạy chương trình
Sẽ bị tràn