Khối lệnh sử dụng: while, if-else.
Chào các bạn! Hôm nay chúng ta sẽ cùng làm “máy tính hóa đơn điện” như thật, có thể tính chính xác từng bậc giá và hiển thị bảng chi tiết! ⚡💻
🎭 Hãy tưởng tượng:
- Bạn lànhân viên EVNtính hóa đơn cho khách hàng! 👨💼
- Hoặc bạn làkế toán gia đìnhmuốn kiểm tra hóa đơn điện có đúng không! 📊
- Hoặc bạn tò mò muốn biếttiền điện được tính như thế nào! 🤔
Nhiệm vụ hôm nay: Tạo chương trình có thể:
- Nhập số kWhđã sử dụng (kiểu double)
- Kiểm trasố hợp lệ với while
- Tính tiềntừng bậc giá bằng if-else
- Hiển thị bảngchi tiết từng tầng bậc và tổng tiền!
Ví dụ đầu vào: 150 kWh
➡️ Kết quả:
┌─────┬────────────┬─────────┬──────────────┐
│ Bậc │ Khoảng │ Số kWh │ Tiền (đ) │
├─────┼────────────┼─────────┼──────────────┤
│ 1 │ 0-50 │ 50 │ 99,200 │
│ 2 │ 51-100 │ 50 │ 102,500 │
│ 3 │ 101-200 │ 50 │ 119,000 │
└─────┴────────────┴─────────┴──────────────┘
TỔNG TIỀN: 320,700 đồng
📚 BIỂU GIÁ ĐIỆN EVN 2025 – BẢNG GIÁ CHÍNH THỨC
🎯6 bậc giá điện sinh hoạt:
( Lấy theo báo: https://thuvienphapluat.vn/banan/tin-tuc/chinh-thuc-co-bang-gia-dien-sinh-hoat-moi-ap-dung-tu-ngay-1052025-15635, nếu ko phải các bạn tự cập nhật trong code nhé. Đây chỉ lài ví dụ )
Bậc | Khoảng kWh | Giá (đồng/kWh) |
---|---|---|
1 | 0 – 50 | 1,984 |
2 | 51 – 100 | 2,050 |
3 | 101 – 200 | 2,380 |
4 | 201 – 300 | 2,998 |
5 | 301 – 400 | 3,350 |
6 | 401 trở lên | 3,460 |
💡 Nguyên tắc tính lũy tiến:
Ví dụ: 250 kWh<br>- 50 kWh đầu × 1,984 = 99,200đ (bậc 1)<br>- 50 kWh tiếp × 2,050 = 102,500đ (bậc 2)<br>- 100 kWh tiếp × 2,380 = 238,000đ (bậc 3)<br>- 50 kWh cuối × 2,998 = 149,900đ (bậc 4)<br>➡️ Tổng: 589,600 đồng
🎯 PHÂN TÍCH YÊU CẦU ĐỀ BÀI
📋 Đề bài yêu cầu:
- Nhập:số kWh (kiểu double)
- Validation:dùng while kiểm tra hợp lệ
- Tính toán:dùng if-else tính từng bậc giá
- Xuất:bảng tầng bậc điện và tổng tiền từng bậc
🗺️ Thuật toán:
text1. Dùng while nhập usage >= 0
2. Xác định usage thuộc bậc nào bằng if-else
3. Tính tiền từng bậc và tổng tiền
4. Hiển thị bảng chi tiết:
- Từng bậc đã sử dụng
- Số kWh của bậc đó
- Tiền của bậc đó
- Tổng tiền cuối cùng
🛠️ GIẢI THÍCH TỪNG BƯỚC
Bước 1: Nhập và validation
double usage;
// Dùng WHILE để kiểm tra như đề yêu cầu
while (true) {
cout << "Nhập số kWh điện đã sử dụng (>= 0): ";
cin >> usage;
if (usage >= 0) {
break;
}
cout << "❌ Số kWh không được âm! Vui lòng nhập lại.\n";
}
Bước 2: Xác định bậc giá bằng if-else
int tier = 1; // Bậc giá sẽ áp dụng
// Dùng IF-ELSE để xác định bậc như đề yêu cầu
if (usage <= 50) {
tier = 1;
} else if (usage <= 100) {
tier = 2;
} else if (usage <= 200) {
tier = 3;
} else if (usage <= 300) {
tier = 4;
} else if (usage <= 400) {
tier = 5;
} else {
tier = 6;
}
Bước 3: Tính tiền từng bậc
double tien1 = 0, tien2 = 0, tien3 = 0, tien4 = 0, tien5 = 0, tien6 = 0;
double kwh1 = 0, kwh2 = 0, kwh3 = 0, kwh4 = 0, kwh5 = 0, kwh6 = 0;
// Tính từng bậc theo if-else
if (tier >= 1) {
kwh1 = (usage > 50) ? 50 : usage;
tien1 = kwh1 * 1984;
}
if (tier >= 2) {
kwh2 = (usage > 100) ? 50 : (usage - 50);
tien2 = kwh2 * 2050;
}
// ... tương tự cho các bậc khác
🎮 TEST CHƯƠNG TRÌNH
📝 Test case 1: Mức thấp (30 kWh)
Input: 30
Expected:
- Bậc 1: 30 kWh × 1,984 = 59,520 đồng
- Tổng: 59,520 đồng
📝 Test case 2: Mức trung bình (180 kWh)
Input: 180
Expected:
- Bậc 1: 50 × 1,984 = 99,200
- Bậc 2: 50 × 2,050 = 102,500
- Bậc 3: 80 × 2,380 = 190,400
- Tổng: 392,100 đồng
📝 Test case 3: Mức cao (450 kWh)
Input: 450
Expected: Sử dụng tất cả 6 bậc giá
🎯 BÀI TẬP THỰC HÀNH
🟢 Cấp độ dễ:
Bài 1: Tính tiền điện 3 bậc đầu
/*
YÊU CẦU:
- Chỉ tính 3 bậc đầu (1, 2, 3)
- Bảng đơn giản hơn
- Validation cơ bản với while
- Sử dụng if-else cho 3 trường hợp
*/
🟡 Cấp độ trung bình:
Bài 2: So sánh 2 tháng
/*
YÊU CẦU:
- Nhập điện tháng trước và tháng này
- Tính tiền cả hai tháng
- Hiển thị 2 bảng tầng bậc song song
- So sánh tăng/giảm bao nhiêu tiền
*/
🔴 Cấp độ khó:
Bài 3: Hệ thống nhiều loại khách hàng
/*
YÊU CẦU:
- 3 loại: Sinh hoạt, Sản xuất, Kinh doanh
- Mỗi loại có biểu giá khác nhau
- Menu chọn loại khách hàng
- Hiển thị bảng phù hợp với từng loại
*/
💡 MẸO VÀ THỦ THUẬT
🌟 Cách tính từng bậc chính xác:
// Đúng: Tính từng bậc riêng biệt
if (usage > 100) {
kwh3 = (usage <= 200) ? (usage - 100) : 100;
tien3 = kwh3 * 2380;
}
// Sai: Nhầm lẫn công thức
if (usage > 100) {
tien3 = usage * 2380; // SAI - nhân toàn bộ!
}
🎯 Hiển thị bảng đẹp mắt:
// Sử dụng setw() để căn chỉnh
cout << "│ " << setw(7) << kwh1
<< " │ " << setw(12) << (long long)tien1 << " │\n";
📋 CHECKLIST HOÀN THÀNH
✅ Yêu cầu bắt buộc:
- Sử dụng while để validation usage >= 0
- Sử dụng if-else để tính từng bậc giá
- Nhập usage kiểu double
- Hiển thị bảng tầng bậc chi tiết
- Hiển thị tổng tiền từng bậc
- Tính đúng theo biểu giá EVN 2025
- Code chạy đúng với test cases
✅ Điểm cộng nếu có:
- Bảng đẹp mắt với ASCII art
- Đánh giá mức tiêu thụ
- Tính giá trung bình
- Lời khuyên tiết kiệm điện
- Comments giải thích chi tiết
🎊 TỔNG KẾT
🏆 Bạn đã học được:
- ✨Xử lý dữ liệu phức tạpvới while và if-else
- 🎯Tính toán bậc giá lũy tiếnchính xác
- 📊Hiển thị bảng dữ liệuchuyên nghiệp
- 💰Ứng dụng thực tếtrong đời sống
🌟 Tại sao bài này quan trọng:
- Practical:Hiểu cách tính hóa đơn điện thật
- Logic:Rèn luyện tư duy phân tích phức tạp
- Programming:Kết hợp nhiều kỹ thuật trong một bài
- Life skill:Kiểm soát chi phí gia đình
Tiếp tục hành trình chinh phục lập trình với những bài toán thực tế! ⚡🎊
🌟 CODE HOÀN CHỈNH
Đây là bài giải mẫu. Chúng ta nên tự giải bài tập dựa theo hướng dẫn của Admin trước hãy xem bài giải nhé. (Vui lòng đăng nhập để xem).
🏷️ Tags:
#C++
#tính-tiền-điện
#biểu-giá-lũy-tiến
#bảng-tầng-bậc
#while-loop
#if-else
#EVN
#validation
#real-world
#dễ-hiểu
#programming-tutorial