Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình kiểm tra tràn bình nước khi nhúng n quả cầu rắn trong C++


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