Viết chương trình tìm số trung gian

Viết chương trình sử dụng hàm tìm số trung gian

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 !

Similar Posts

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments