Admin Học Vấn Cho Con|
08/10/2025
8lượt xem
0bình luận

C++ Bài 27: [Bài Tập] Tìm số lớn nhất trong 3 số – cuộc chiến so sánh!

Mục lục

Chào các bạn! Hôm nay chúng ta sẽ trở thành “trọng tài cuộc thi” để tìm ra ai là “nhà vô địch” trong ba con số! 🥇

🎭 Hãy tưởng tượng:

  • Bạn làtrọng tài boxing🥊 xét thắng thua giữa 3 võ sĩ!
  • Hoặc bạn làgiám khảo cuộc thi🏆 chấm điểm cao nhất!
  • Hoặc đơn giản, bạn muốnmáy tính tự độngtìm số lớn nhất mà không cần suy nghĩ! 🤖

Hôm nay bạn sẽ học:

  • Thuật toán so sánhđơn giản nhất thế giới
  • 2 phương phápkhác nhau để giải quyết
  • Xử lý trường hợp đặc biệtkhi có số bằng nhau
  • Ứng dụng thực tếtrong thi cử, thể thao, kinh doanh!
// Thay vì phải so sánh tay:
// A=15, B=23, C=19 → ai lớn nhất?
// Để C++ tự tìm:
int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

Từ bây giờ, bạn sẽ trở thành “master so sánh” tìm được người thắng cuộc trong tích tắc! 🚀


📚 CƠ SỞ LÝ THUYẾT

🎯 Bài toán:

Cho 3 số thực abc. Tìm số lớn nhất trong ba số đó.

🧠 Tư duy giải quyết:

  1. So sánh từng cặpđể tìm số lớn nhất
  2. Giả sửmột số là lớn nhất, rồi kiểm tra
  3. Dùng hàm có sẵnmax()(nâng cao)

🔍 Các trường hợp có thể:

  • Ba sốkhác nhau: có 1 số lớn nhất duy nhất
  • Hai sốbằng nhauvà lớn hơn số thứ 3
  • Ba số bằng nhau: cả 3 đều là số lớn nhất

🛠️ PHƯƠNG PHÁP 1: SO SÁNH TỪNG CẶP

🎪 Thuật toán:

  1. So sánhab→ tìmmax1
  2. So sánhmax1c→ tìm số lớn nhất

💻 Code mẫu:

#include <iostream>
using namespace std;

int main() {
    double a, b, c;
    
    cout << "🔢 CHƯƠNG TRÌNH TÌM SỐ LỚN NHẤT TRONG 3 SỐ" << endl;
    cout << "════════════════════════════════════════════" << endl;
    
    cout << "Nhập số thứ nhất: ";
    cin >> a;
    cout << "Nhập số thứ hai: ";
    cin >> b;
    cout << "Nhập số thứ ba: ";
    cin >> c;
    
    cout << "\n📊 Ba số bạn đã nhập: " << a << ", " << b << ", " << c << endl;
    
    // Bước 1: Tìm max của a và b
    double max1;
    if (a > b) {
        max1 = a;
        cout << "\n🥊 Vòng 1: " << a << " > " << b << " → " << a << " thắng!" << endl;
    } else {
        max1 = b;
        cout << "\n🥊 Vòng 1: " << b << " ≥ " << a << " → " << b << " thắng!" << endl;
    }
    
    // Bước 2: So sánh max1 với c
    double soLonNhat;
    if (max1 > c) {
        soLonNhat = max1;
        cout << "🏆 Chung kết: " << max1 << " > " << c << " → " << max1 << " vô địch!" << endl;
    } else {
        soLonNhat = c;
        cout << "🏆 Chung kết: " << c << " ≥ " << max1 << " → " << c << " vô địch!" << endl;
    }
    
    cout << "\n🎉 KẾT QUẢ: Số lớn nhất là " << soLonNhat << endl;
    
    return 0;
}

⚡ PHƯƠNG PHÁP 2: IF-ELSE LỒNG NHAU

🎯 Thuật toán:

So sánh tất cả các khả năng với cấu trúc if-else chi tiết.

💻 Code mẫu:

#include <iostream>
using namespace std;

int main() {
    double a, b, c, soLonNhat;
    
    cout << "Nhập 3 số: ";
    cin >> a >> b >> c;
    
    cout << "\n🔍 PHÂN TÍCH CHI TIẾT:" << endl;
    cout << "════════════════════════════════════════════" << endl;
    
    if (a >= b && a >= c) {
        soLonNhat = a;
        cout << "✅ " << a << " ≥ " << b << " và " << a << " ≥ " << c << endl;
        cout << "🏆 Số " << a << " là lớn nhất!" << endl;
        
    } else if (b >= a && b >= c) {
        soLonNhat = b;
        cout << "✅ " << b << " ≥ " << a << " và " << b << " ≥ " << c << endl;
        cout << "🏆 Số " << b << " là lớn nhất!" << endl;
        
    } else {
        soLonNhat = c;
        cout << "✅ " << c << " ≥ " << a << " và " << c << " ≥ " << b << endl;
        cout << "🏆 Số " << c << " là lớn nhất!" << endl;
    }
    
    // Kiểm tra trường hợp bằng nhau
    if (a == b && b == c) {
        cout << "🤝 Đặc biệt: Cả 3 số đều bằng nhau!" << endl;
    } else if (a == soLonNhat && b == soLonNhat) {
        cout << "🤝 Có 2 số cùng lớn nhất: " << a << " và " << b << endl;
    } else if (a == soLonNhat && c == soLonNhat) {
        cout << "🤝 Có 2 số cùng lớn nhất: " << a << " và " << c << endl;
    } else if (b == soLonNhat && c == soLonNhat) {
        cout << "🤝 Có 2 số cùng lớn nhất: " << b << " và " << c << endl;
    }
    
    return 0;
}

🎨 PHƯƠNG PHÁP 3: SỬ DỤNG HÀM MAX()

🚀 Code tối ưu:

#include <iostream>
#include <algorithm>  // Chứa hàm max()
using namespace std;

int main() {
    double a, b, c;
    
    cout << "Nhập 3 số: ";
    cin >> a >> b >> c;
    
    // Cách 1: Dùng max() lồng nhau
    double soLonNhat1 = max(a, max(b, c));
    
    // Cách 2: Dùng max() với initializer_list (C++11)
    double soLonNhat2 = max({a, b, c});
    
    cout << "\n🎯 KẾT QUẢ:" << endl;
    cout << "Cách 1: " << soLonNhat1 << endl;
    cout << "Cách 2: " << soLonNhat2 << endl;
    
    return 0;
}

🎪CHƯƠNG TRÌNH HOÀN CHỈNH VÀ VUI NHỘN

🌟 CODE HOÀN CHỈNH


🎯 BÀI TẬP THỰC HÀNH – 3 CẤP ĐỘ

🟢 CẤP ĐỘ DỄ: Làm quen với so sánh

Bài 1: Tìm số lớn nhất cơ bản

/*
YÊU CẦU:
- Nhập 3 số nguyên a, b, c
- Dùng if-else đơn giản tìm số lớn nhất
- In ra: "Số lớn nhất là: X"
- Test với: (5,3,8), (10,10,7), (2,2,2)
*/

Bài 2: Tìm cả số lớn nhất và nhỏ nhất

/*
YÊU CẦU:
- Nhập 3 số thực
- Tìm đồng thời số lớn nhất và nhỏ nhất
- In ra cả hai kết quả
- Tính khoảng cách: max - min
*/

Bài 3: Tìm số lớn nhất với thông báo vui

/*
YÊU CẦU:
- Nhập 3 số
- Tìm số lớn nhất
- Thêm emoji và thông báo vui:
  + "🥇 Số X giành chiến thắng!"
  + "🎉 Chúc mừng số X vô địch!"
*/

🟡 CẤP ĐỘ TRUNG BÌNH: Ứng dụng thực tế

Bài 4: Tìm điểm cao nhất của 3 môn học

/*
YÊU CẦU:
- Nhập điểm Toán, Lý, Hóa
- Tìm điểm cao nhất
- Cho biết môn nào đạt điểm cao nhất
- Nếu có môn bằng điểm cao nhất, liệt kê tất cả
*/

Bài 5: So sánh tuổi của 3 người

/*
YÊU CẦU:
- Nhập tên và tuổi của 3 người
- Tìm người lớn tuổi nhất
- In ra: "Người lớn tuổi nhất là: [Tên], [Tuổi] tuổi"
- Xử lý trường hợp cùng tuổi
*/

Bài 6: Tìm giá cao nhất trong 3 sản phẩm

/*
YÊU CẦU:
- Nhập tên và giá của 3 sản phẩm
- Tìm sản phẩm đắt nhất
- Tính % đắt hơn so với sản phẩm rẻ nhất
- Format giá tiền đẹp mắt (có dấu phẩy)
*/

🔴 CẤP ĐỘ KHÓ: Thử thách nâng cao

Bài 7: Tìm max của 3 số với validation

/*
YÊU CẦU:
- Nhập 3 số, kiểm tra input hợp lệ
- Chỉ cho phép số từ -1000 đến 1000
- Nếu input sai, yêu cầu nhập lại
- Hiển thị lịch sử các lần nhập
- Đếm số lần thử
*/

Bài 8: So sánh 3 số với độ chính xác

/*
YÊU CẦU:
- Nhập 3 số thập phân
- So sánh với độ chính xác epsilon = 1e-6
- Hai số được coi là "bằng nhau" nếu |a-b| < epsilon
- Xử lý trường hợp các số rất gần nhau
*/

🏆 THỬ THÁCH BONUS – DÀNH CHO SIÊU SAO

Challenge 1: “Max Finder Pro”

/*
NHIỆM VỤ:
- Tạo class MaxFinder với nhiều phương thức:
  + findMax(a,b,c) - tìm max cơ bản
  + findMaxWithIndex(a,b,c) - trả về max và vị trí
  + findMaxWithDetails(a,b,c) - phân tích chi tiết
- Hỗ trợ template cho nhiều kiểu dữ liệu
- Unit test tự động
*/

Challenge 2: “Visual Comparison”

/*
NHIỆM VỤ:
- Vẽ biểu đồ cột ASCII so sánh 3 số
- Ví dụ:
  A: ████████ (8)
  B: ██████████████ (14) ← MAX
  C: ██████ (6)
- Animation từng bước so sánh
- Export kết quả ra file HTML
*/

💡 MẸO VÀ THỦ THUẬT CHUYÊN NGHIỆP

🌟 1. Tối ưu với Conditional Operator:

int max3 = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

🎯 2. Hàm tái sử dụng:

double timMax3So(double x, double y, double z) {
    if (x >= y && x >= z) return x;
    if (y >= z) return y;
    return z;
}

⚡ 3. Template cho nhiều kiểu dữ liệu:

template<typename T>
T timMax(T a, T b, T c) {
    return max({a, b, c});
}

🎨 4. Xử lý số bằng nhau:

bool coSoBangNhau = (a == b) || (b == c) || (a == c);
if (coSoBangNhau) {
    cout << "Có số bằng nhau!" << endl;
}

🐛 TRÁNH CÁC LỖI THƯỜNG GẶP

❌ Lỗi 1: Dùng sai toán tử so sánh

<em>// SAI:</em><br>if (a > b > c) { ... }  <em>// Không logic!</em><br><br><em>// ĐÚNG:</em><br>if (a > b && a > c) { ... }

❌ Lỗi 2: Quên xử lý số bằng nhau

// SAI: Chỉ dùng >
if (a > b && a > c) { ... }

// ĐÚNG: Dùng >=
if (a >= b && a >= c) { ... }

❌ Lỗi 3: Logic if-else sai

// SAI: Thiếu điều kiện
if (a > b) {
    if (a > c) return a;
    // Thiếu else cho trường hợp a <= c
}

// ĐÚNG: Đầy đủ các trường hợp
if (a > b) {
    if (a > c) return a;
    else return c;
} else {
    if (b > c) return b;
    else return c;
}

📋 CHECKLIST KIẾN THỨC

✅ Cơ bản (Beginner):

  • Hiểu cách so sánh 2 số với > và >=
  • Biết cách so sánh 3 số bằng if-else
  • Xử lý được trường hợp số bằng nhau
  • Code chạy đúng với input cơ bản
  • Hiển thị kết quả rõ ràng

✅ Trung cấp (Intermediate):

  • Dùng thành thạo nhiều phương pháp khác nhau
  • Tạo hàm tái sử dụng
  • Xử lý input validation
  • Kết hợp với các kiểu dữ liệu khác (string, struct)
  • Optimize code với conditional operator

✅ Nâng cao (Advanced):

  • Sử dụng template cho generic programming
  • Xử lý floating-point comparison chính xác
  • Tạo class với multiple methods
  • Unit testing và error handling
  • Performance optimization

🎊 TỔNG KẾT BÀI HỌC

🏆 Chúc mừng! Bạn đã trở thành “MASTER SO SÁNH”!

📚 Những gì bạn đã học:

  • 3 phương pháptìm số lớn nhất: so sánh từng cặp, if-else toàn diện, hàm max()
  • 🎯Xử lý edge cases:số bằng nhau, validation input
  • 🔗Tư duy thuật toán:phân tích bài toán, thiết kế giải pháp
  • Coding skills:if-else, functions, templates
  • 🧠Problem solving:debug, optimize, test

🌟 Tại sao bài này quan trọng:

  • Foundation:Nền tảng cho mọi thuật toán sorting và searching
  • Logic thinking:Rèn luyện tư duy logic và phân tích trường hợp
  • Real applications:Áp dụng trong game, AI, data analysis
  • Building blocks:Chuẩn bị cho cấu trúc dữ liệu phức tạp hơn

🎮 MINI GAME: “NUMBER CHAMPION CHALLENGE”

🎯 Thử thách 90 giây:

Tìm nhanh số lớn nhất trong các bộ ba sau:

  1. 15, 23, 19→ ?
  2. 7.5, 7.3, 7.8→ ?
  3. 100, 100, 99→ ?
  4. -5, -2, -8→ ?
  5. 0, 0, 0→ ?

⏰ Sẵn sàng? Bắt đầu!


💬 HỎI ĐÁP THÔNG MINH

❓ Câu hỏi thường gặp:

Q: Phương pháp nào nhanh nhất?
A: Hàm max() có sẵn nhanh và gọn nhất. Tuy nhiên, hiểu cách implement bằng if-else giúp bạn nắm vững logic.

Q: Làm sao xử lý trường hợp 2 hoặc 3 số bằng nhau?
A: Dùng >= thay vì > trong điều kiện. Và kiểm tra riêng các trường hợp bằng nhau nếu cần thông báo đặc biệt.

Q: Có thể mở rộng cho tìm max của n số không?
A: Có! Dùng mảng + vòng lặp, hoặc std::max_element(), hoặc recursive approach.

Q: Tại sao cần học cách so sánh cơ bản khi có hàm có sẵn?
A: Hiểu nguyên lý giúp bạn tự tin hơn, debug dễ hơn, và là nền tảng cho các thuật toán phức tạp.

🆘 Cần trợ giúp?

  • 💻Testvới các trường hợp đặc biệt
  • 🔍Debugbằng cách in ra từng bước so sánh
  • 📚Thực hànhvới nhiều kiểu dữ liệu khác nhau

🎉 LỜI KHÍCH LỆ CUỐI BÀI

Tuyệt vời! Bạn vừa master được một skill cơ bản nhưng quan trọng của lập trình! 🚀

💪 Việc tìm số lớn nhất tưởng đơn giản nhưng nó xuất hiện everywhere: từ tìm điểm cao nhất trong thi cử, giá tốt nhất trong thương mại, đến các thuật toán AI phức tạp!

🌟 Level up achieved: Bạn đã học được cách phân tích bài toánthiết kế nhiều giải pháp, và so sánh ưu nhược điểm của từng cách. Đây là tư duy của một developer thực thụ!

🎯 Next challenge: Từ việc so sánh 3 số, bạn có thể mở rộng ra so sánh n số, tìm top-k elements, và nhiều thuật toán sorting khác!

Tiếp tục hành trình chinh phục logic và thuật toán! 🏆✨


🏷️ Tags:

#C++ #tìm-số-lớn-nhất #so-sánh-3-số #if-else #thuật-toán-so-sánh #max-function #điều-kiện-lồng-nhau #bài-tập-thực-hành #logic-programming #cơ-bản #dễ-hiểu #Việt-Nam #programming-tutorial

ThíchĐã Thích0
Chia Sẻ

C++ Bài 27: [Bài Tập] Tìm số lớn nhất trong 3 số – cuộc chiến so sánh!

Hướng dẫn tìm số lớn nhất trong 3 số bằng C++: thuật toán so sánh đơn giản với if-else, ví dụ minh họa chi tiết, code mẫu và 20+ bài tập thực hành từ cơ bản đến nâng cao.


Bạn muốn chia sẻ bài viết này:

# Bài Viết Liên Quan

  • Bai 26 bai tap phan loai hoc luc theo diem trung binh

    C++ Bài 26: [Bài Tập] Phân loại học lực theo điểm trung bình

    Hướng dẫn chi tiết cách phân loại học lực theo điểm trung bình trong C++ với cú pháp if-else, ví dụ minh họa, code mẫu rõ ràng và 20+ bài tập thực hành phân cấp từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 25 dieu kien long nhau – if trong if kham pha nguc sau

    C++ Bài 25: Điều kiện lồng nhau – if trong if, khám phá ngục sâu!

    Hướng dẫn câu lệnh điều kiện lồng nhau trong C++: cách viết “if…else” trong “if…else”, ví dụ minh họa thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao, giúp nắm vững logic nhiều tầng.

    15/10/2025
  • Bai 24 if else – neu… thi… khong thi…

    C++ Bài 24: if-else – nếu… thì… không thì…!

    Học câu lệnh if-else trong C++ dễ hiểu: cú pháp “nếu… thì… không thì…”, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 23 if neu thi dieu kien don

    C++ Bài 23: if – nếu… thì… (điều kiện đơn)

    Bài học về câu lệnh if đơn giản trong C++: cách dùng if để kiểm tra điều kiện, thực hiện lệnh khi điều kiện đúng. Hướng dẫn chi tiết với ví dụ dễ hiểu, bài tập từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 22 du an mini may tinh khoa hoc mini sieu calculator

    C++ Bài 22: [Dự Án Mini] Máy tính khoa học mini – siêu calculator!

    Dự án mini máy tính khoa học bằng C++ dễ hiểu: tổng hợp toán tử, if-else, input validation, menu lựa chọn. Code hoàn chỉnh với giao diện đẹp, xử lý lỗi và 20+ chức năng từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 21 bai tap kiem tra so chan le tham tu so hoc

    C++ Bài 21: [Bài Tập] Kiểm tra số chẵn lẻ – thám tử số học!

    Bài tập kiểm tra số chẵn lẻ bằng C++ dễ hiểu: sử dụng toán tử % (chia lấy dư), câu lệnh if-else, input validation. Code hoàn chỉnh với 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 20 bai tap giai phuong trinh bac nhat tham tu toan hoc

    C++ Bài 20: [Bài Tập] Giải phương trình bậc nhất – thám tử toán học!

    Bài tập giải phương trình bậc nhất ax + b = 0 bằng C++ dễ hiểu. Hướng dẫn từng bước, xử lý trường hợp đặc biệt, code hoàn chỉnh với 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 19 do uu tien toan tu nhan chia truoc cong tru sau

    C++ Bài 19: Độ ưu tiên toán tử – nhân chia trước, cộng trừ sau!

    Học độ ưu tiên toán tử trong C++ dễ hiểu: thứ tự tính toán (), *, /, %, +, -, ==, !=, &&, ||. Hướng dẫn chi tiết với bảng ưu tiên, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 18 toan tu logic and or not bo nao c

    C++ Bài 18: Toán tử logic – and, or, not – bộ não C++!

    Học toán tử logic trong C++ dễ hiểu: && (AND), || (OR), ! (NOT) để kết hợp điều kiện phức tạp. Hướng dẫn chi tiết với bảng chân trị, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 17 toan tu so sanh ai lon hon ai

    C++ Bài 17: Toán Tử So Sánh – ai lớn hơn ai?

    Học toán tử so sánh trong C++ dễ hiểu: ==, !=, , = để so sánh số và chuỗi. Hướng dẫn chi tiết với ví dụ thực tế, tránh lỗi thường gặp và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    03/10/2025
  • Bai 16 toan tu gan dua gia tri vao bien nhu bo do vao hop

    C++ Bài 16: Toán tử gán – đưa giá trị vào biến như bỏ đồ vào hộp!

    Học toán tử gán trong C++ dễ hiểu: dấu = gán cơ bản, +=, -=, *=, /= gán kết hợp, ++ và — tăng giảm. Hướng dẫn chi tiết với ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    01/10/2025
  • Bai 15 toan tu so hoc cong tru nhan chia nhu toan lop 1

    C++ Bài 15: Toán tử số học – cộng trừ nhân chia như toán lớp 1!

    Học toán tử số học trong C++ dễ hiểu: cộng +, trừ -, nhân *, chia /, chia lấy dư % và lũy thừa. Hướng dẫn chi tiết với ví dụ thực tế, thứ tự ưu tiên và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    01/10/2025
0 0 votes
Đánh Giá Bài Viết
Subscribe
Notify of
guest
0 Bình Luận
Oldest
Newest Most Voted
Inline Feedbacks
Xem tất cả bình luận
Top Views
  • Board Mo Rong Microbit V2 Tuong Thich Module Amp Sensor 3 3v 5v 01
    26/12/2024
  • Make Code
    24/12/2024
  • Tu Tao May Dem Buoc Chan Cho Minh
    06/01/2025
  • Module Led Rgb 3 Mau 4 Chan Hw 479 01
    26/12/2024
  • Micro:bit V2 – Máy Tính Bỏ Túi Cho Giáo Dục STEM
    06/01/2025
  • Bai 01 chao mung den voi c tu scratch den sieu ngon ngu 01
    26/09/2025
  • Bai 02 cai dat moi truong online code ngay khong can cai dat 01
    27/09/2025
  • Bai 04 cau truc chuong trinh c nhu mot bai van co dau co cuoi 01
    27/09/2025
  • Bai 05 bien va kieu du lieu hop chua thong tin than ky 01
    27/09/2025
  • Bai 06 cout dua thong tin ra man hinh nhu phep mau 01
    28/09/2025
Top Love
  • Tu Tao May Dem Buoc Chan Cho Minh
    06/01/2025
  • Micro:bit V2 – Máy Tính Bỏ Túi Cho Giáo Dục STEM
    06/01/2025
  • Module Led Rgb 3 Mau 4 Chan Hw 479 01
    26/12/2024
  • Make Code
    24/12/2024
  • Board Mo Rong Microbit V2 Tuong Thich Module Amp Sensor 3 3v 5v 01
    26/12/2024
  • Bai tap kiem tra so nguyen to trong khoang tim kho bau so hoc
    02/10/2025