01/10/2018, 14:49

Sắp xếp 4 số nguyên từ lớn đến bé

/* nhap 4 so sap xep theo thu tu tu lon den be*/
#include<iostream>
using namespace std;
int sapxep (int a,int b);
int main ()
{
	int a,b,c,d;
	cout <<"Nhap 4 so nguyen bat ky: " <<endl;
    cin >>a >>b >>c >>d;
    sapxep(a,b);
    sapxep(a,c);
    sapxep(a,d);
    sapxep(b,c);
    sapxep(b,d);
    sapxep(c,d);
    cout <<a <<" " <<b <<" " <<c <<" " <<d;
    }
int sapxep (int a,int b)
{
	int t;
	if(a<b)
	{
	t=a;
	a=b;
	b=t;
	}
	}

Cho em hỏi vì sao khi chạy nó vẫn sắp xếp theo thứ tự a,b,c,d ban đầu mà không đổi chỗ ạ. Em mới học lập trình nên còn gà ạ

rogp10 viết 17:02 ngày 01/10/2018

Dùng tham chiếu nhé :v để vầy là chỉ truyền mỗi giá trị thôi

Mà thớt học hàm sớm thế

Gà Mờ UET viết 16:50 ngày 01/10/2018

Bác sửa lại hộ em tý
Cụ thể tham chiếu là như nào, giá trị là như nào bác, em có seach google rồi những vẫn chưa thông @@

Kiii viết 16:54 ngày 01/10/2018

Hiểu đơn giản là bạn đang có 4 biến: a b ứng với địa chỉ 1 2

Nếu bạn truyền theo cách bình thường thì function sapxep sẽ copy 2 biến a b đó vào 1 chỗ khác, lúc này 2 biến này sẽ có địa chỉ là: 3 4 (VD)

Vì vậy dù bạn sắp xếp kiểu gì ở trong hàm sapxep thì chỉ là thay đổi qua lại giá trị ở địa chỉ 5 6 trong khi cái chúng ta cần là thay đổi giá trị ở địa chỉ 1 2

Nên hướng giải quyết là truyền tham chiếu nhé

Nếu bạn truyền tham chiếu thì thằng sapxep sẽ không copy biến sang 1 địa chỉ mới mà sẽ dùng luôn ở địa chỉ truyền vào

P.s: Em hiểu theo ý em, pro nào thấy em hiểu sai có thể giúp đỡ cho em hiểu rõ thêm 1 chút ạ @@

Jacaré Junior viết 16:58 ngày 01/10/2018

TRUYền bằng giá trị vào 1 hàm, đó là truyền 1 bản copy của giá trị đó vào hàm, giá trị gốc trong caller không thay đổi Truyền bằng tham chiếu là truyền địa chỉ của biến đó vào hàm và sử dụng con trỏ để tham chiếu giá trị đó, giá trị gốc trong caller sẽ thay đổi theo.
BÀi toán này có thể dùng mảng và bubble để giải quyết đơn giản, không cần phải gọi ra nhiều hàm như vậy đâu.

Trọng Lê Văn Hiếu viết 16:50 ngày 01/10/2018

Bạn đã biết về vòng lặp chưa?
Còn code thì bạn nên dùng tham chiếu & hoặc biến con trỏ * thử nhé!

Gà Mờ UET viết 16:50 ngày 01/10/2018

Thanks mn, mình hiểu rồi

Bài liên quan
0