Thảo luận tìm cách hay cho bài tìm số lớn nhất, nhỏ nhất trong 3 số

Bài này em mới code chia sẻ anh em thảo luận thử có cách nào hay hơn không, ở đây em sử dụng hàm:

Tìm số lớn/nhỏ nhất trong 3 số.

#include <iostream>
using namespace std;
int maximum(int x,int y,int z);
int minnimum(int x,int y,int z);
int main()
{
	int x,y,z;
	cout << "Nhap x,y,z = ";
	cin >> x >> y >> z;
	cout << "so lon nhat trong 3 so la : " << maximum(x,y,z) << endl;
	cout << "so nho nhat trong 3 so la : " << minnimum(x,y,z) << endl;
	return 0;
}
int maximum(int x,int y,int z)
{
	int max =x;
	if(max < y)
		max =y;
	if(max < z)
		max=z;
	return max;
}
int minnimum(int x,int y,int z)
{
	int min=x;
	if(min > y)
		min=y;
	if(min > z)
		min =z;
	return min;
}`indent preformatted text by 4 spaces`

Dùng cái này để code rõ hơn đi bạn :smile:

4 Likes

cả kỳ học C++ mình biết mỗi như này :grin:

int max(int a, int b){
return a>b?a:b;
}
int min(int a,int b){
return a<b?a:b;
}

--- main---
int max = max(a,max(b,c));
int min = min(a,min(b,c));
3 Likes

Kiểu bác so sánh chỉ làm những chương trình đơn giản thôi, chứ chương trình lớn cần chia thành nhiều thành phần nhỏ viết cách đó chắc chết đó bác , dù sao đây cũng là một ý kiến hay… thanks bác…

vậy so sánh 4 số bạn lại viết thêm 2 hàm min max cho 4 số nữa hả :sweat_smile:

không bác ơi mình thêm vào một biến là đưucọ mà bác,(int x,int y,intz,int…). vậy thôi, hàm min và hàm max là không thêm gì hết … gọn

bác thử làm vậy xem được ko :grin:

Hàm thì vẫn có 3 tham số mà ở main lại truyền 4 tham số vào á :grin:

#include <iostream>
using namespace std;
int maximum(int x,int y,int z,int t);
int minnimum(int x,int y,int z,int t);
int main()
{
	int x,y,z,t;
	cout << "Nhap x,y,z,t = ";
	cin >> x >> y >> z>>t;
	cout << "so lon nhat trong 4 so la : " << maximum(x,y,z,t) << endl;
	cout << "so nho nhat trong 4 so la : " << minnimum(x,y,z,t) << endl;
	return 0;
}
int maximum(int x,int y,int z,int t)
{
	int max =x;
	if(max < y)
		max =y;
	if(max < z)
		max=z;
	if(max < t)
		max=t;
	return max;
}
int minnimum(int x,int y,int z,int t)
{
	int min=x;
	if(min > y)
		min=y;
	if(min > z)
		min =z;
	if(min > t)
		min=t;
	return min;
}

Bác phải rewrite lại code rồi :smiley:
Thế lỡ như 1 ct đòi hỏi tìm max,min 2,3,4 số thì sao?
Như @TTmagic là ngon rồi.
Tức chỉ cần code max min của 2 số.
Rồi từ đó tìm max, min n số cũng đc mà ko cần rewrite code. hay thêm function :")

4 Likes

http://www.cplusplus.com/reference/cstdarg/va_arg/

Bạn tìm hiểu list variable argument có thể đáp ứng đc phần nào.

2 Likes

cám ơn các bác … nói chung có nhiều cách… minh sử dụng hàm biết là chương trình sẽ nặng và chạy lâu , mình nghĩ mình sẽ dùng mảng là nhanh nhất … thanks các bác rất nhiều…

Bao nhiêu tham số cũng cân được hết :smiley:


kết hợp DEFINE cho gọn

#define max2(a,b) ((a>b)?a:b)
#define max3(a,b,c) (max2(max2(a,b),c))

cẩn thận hơn thì phải thế này:

#define max2(a,b) (((a)>(b))?(a):(b))
#define max3(a,b,c) (max2(max2((a),(b)),(c)))

thank anh @ltd :grin:

Define như thế bị lỗi đó Hoàng. Em bọc biến trong define lại bằng () đi :wink:

2 Likes

Cho e hỏi là “?” là gì ạ :sob: e mới học môn này mà đọc đoạn này k hiểu ạ

Tự tìm: Toán tử ba ngôi (Tenary operator).

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?