Bài toán: Cho 3 số. Hãy viết chương trình sử dụng hàm tìm số trung gian( số lớn thứ nhì trong ba số )
a. Sử dụng lệnh if
b. Sử dụng toán tử ?
- Input
2 3 5
- Output
So trung gian la: 3
Sử dụng lệnh if để giải quyết bài toán
Nhắc lại kiến thức
Trước khi bắt đầu giải quyết bài toán thì mình xin phép nhắc lại một ít kiến thức về câu lệnh if nhé !
Mệnh đề if có dạng
if( dieu_khien ) { //Khối lệnh }
Nếu biểu thức dieu_khien trả về giá trị true thì khối lệnh sẽ được thực thi. Còn nếu trả về giá trị false thì khối lệnh không thực thi.
Một lưu ý nhỏ: Giá trị true có thể được ép từ những kiểu khác( khác giá trị 0 ).
Để chứng minh cho câu nói trên thì xin mời các bạn xem qua ví dụ này:
int main() { int a = 25; if (a) cout << "A: " << a << endl; return 0; }
A: 25
Ngoài ra có câu lệnh if else dạng đủ như sau
if( dieu_khien ) { //Khối lệnh 1 } else { //Khối lệnh 2 }
Nếu biểu thức dieu_khien trả về giá trị true thì khối lệnh sẽ được thực hiện. Nếu trả về giá trị false thì khối lệnh 2 sẽ được thực hiện.
Giải quyết bài toán
Đầu tiên ta giả sử a là số trung gian, khi đó ta kiểm tra điều kiện số a là trung gian. Nếu điều kiện đúng thì ta trả về giá trị a cho hàm trung gian.
Làm tương tự cho b. Nếu a, b đều không phải là số trung gian( hàm trungGian
chưa trả về giá trị ) thì ta trả về giá trị của c. Không cần phải kiểm tra lại.
Code tham khảo:
#include <iostream> #include <string> using namespace std; int trungGian(int a, int b, int c) { //Kiểm tra xem a có phải là số trung gian if (b < a && a < c || c < a && a < b) return a; //Kiểm tra xem b có phải là số trung gian if (a < b && b < c || c < b && b < a) return b; return c; } int main() { int a, b, c; cout << "Nhap a: "; cin >> a; cout << "Nhap b: "; cin >> b; cout << "Nhap c: "; cin >> c; cout << "So trung gian la: " << trungGian(a, b, c)<<endl; return 0; }
Nhap a: 2 Nhap b: 3 Nhap c: 5 So trung gian la: 3
Ở đây mình chỉ sử dụng câu lệnh if.
Sử dụng toán tử ? để giải quyết bài toán
Nhắc lại kiến thức
Toán tử ? có cú pháp sử dụng như sau
bien = (dieu_kien) ? a : b;
Nếu điều kiện đúng thì sẽ gắn giá trị a cho biến bien = a;
ngược lại bien = b;
.
Có vẻ hơi khó hiểu nhỉ ? Nhưng đừng lo, khi mới bắt đầu thì ai cũng vậy thôi. Cùng xem ví dụ sau:
int main() { int min; int a = 3; int b = 5; min = (a < b) ? a : b; cout << "Min: " << min<<endl; retun 0; }
Min: 3
Đây, vì điều kiện (a < b) đúng nên min sẽ được gán giá trị a.
Giải quyết bài toán
Đầu tiên mình sẽ khởi tạo biến temp dùng để lưu giá trị trung gian. Tiếp theo kiểm tra điều kiện a là số trung gian, nếu đúng là vậy thì temp = a
. Ngược lại, thì ta sẽ kiểm tra xem b có phải số trung gian hay không ? Nếu đúng thì temp = b
Nếu sai thì temp = c
.
Cuối cùng ta chỉ cần trả về giá trị temp mà thôi.
Code tham khảo:
#include <iostream> using namespace std; int trungGian(int a, int b, int c) { int temp; temp = (b < a && a < c || c < a && a < b) ? a : (a < b && b < c || c < b && b < a) ? b : c; return temp; } int main() { int a, b, c; cout << "Nhap a: "; cin >> a; cout << "Nhap b: "; cin >> b; cout << "Nhap c: "; cin >> c; cout << "So trung gian la: " << trungGian(a, b, c)<<endl; return 0; }
Nhap a: 1 Nhap b: 2 Nhap c: 3 So trung gian la: 2
Code thì rất ngắn gọn đấy ! Nhưng hơi khó hiểu phải không nào ! Chỉ cần bạn chú tâm một xíu là sẽ hiểu ngay thôi.
Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Trả lời