Hỏi về nguyên tắc hoạt động của code

https://codeshare.io/an463n
Thực sự e ko hiểu chỗ index (dong 28) nếu thay bằng i (dòng 40) thì hàm chạy thế nào nữa ,vì i nó cũng chạy nên hơi khó hiểu

index ở dòng 28

int PhanTuXuatHienMax(int*a,int n,int index)

là tham trị. Bạn nạp giá trị vào chỗ index kia thì hàm chạy.

// Bạn học cơ bản kiểu gì thế?

nếu nạp vào index là 1 hằng số thì em hiểu ,nhưng ở đây thay index=i ,mà i chạy thì cuối cùng nó hoạt đông sao ạ

i chạy trong hàm PhanTuXuatHienMax là i khác, còn nạp vào hàm là giá trị hiện thời của i trong void LietKe. 2 biến i không liên quan đến nhau.

thế index ở đây ko biết giá trị là bao nhiêu à a

index là tham trị mà. Giá trị của index là do mình nạp vào chứ.

thì nạp vào index chính là i đó chứ sao nữa anh hi , em nghi là vậy

Bạn có hiểu code của bạn dùng để làm gì không? Nếu có thì không phải hỏi như thế này.

anh giải thích cho em chỗ hàm PhanTuXuatHienMax nó hoạt động thế nào với ạ ,
cụ thể hơn ở chỗ index

Ô thế code này không phải code của bạn à? :expressionless:


int PhanTuXuatHienMax(int*a,int n,int index){
	int dem = 1;
	for (int i = index + 1; i < n; i++) {
		if (*(a + i) == *(a + index))
			dem++;
	}
	return dem;
}

Tên hàm là PhanTuXuatHienMax, nhưng mà chức năng của hàm lại không liên quan đến tên hàm. :expressionless:

[spoiler]douma thằng nào code cái này thế :expressionless: [/spoiler]

Hàm này đếm số phần tử nằm sau a[index] mà có giá trị bằng a[index]. i chỉ là biến chạy.

index ở đay = bao nhiêu a
nếu index là do mình nhập thì câu lệnh nhâp ở đâu trong đống code kia ạ

Bạn đọc code được mấy lần thế?


Trong cả code to tổ bố của bạn chỉ có đúng 1 chỗ gọi hàm PhanTuXuatHienMax. Và nó ở đây:

void LietKe(int *a,int n){
	int TanXuatMax = DemSoLanXuatHien(a, n);
	if (TanXuatMax > 1) {
		for (int i = 0; i < n; i++) {
			int TanSuatPhanTu = PhanTuXuatHienMax(a, n, i);
			if (TanSuatPhanTu == TanXuatMax)
				cout << "\nphan tu xuat hien max la: " << *(a + i);
		}
	}
	else
		cout << "cac phan tu xuat hien max chi 1 lan.";
}

P/s: Lưu ý chính tả: “tần suất” chứ không phải “tần xuất”.

dòng này ko phải thay index =i thì là gì anh trai :smiley:

Nó không phải là thay, nó là nạp.

thương người ta nap vào 1 const ,nhưng đây nạp vào 1 biến chạy thấy khó hiêu anh trai ạ

vidu : int ham(int a,int b) {return a+b;}
int main(){ ham(5,6);}

thấy ngươi ta thây tham số =const chứ chưa thấy thay = biên chạy nên ko hiểu nguyên tắc hoạt động

Nó nạp vào giá trị của i mà. index kia có phải là tham biến đâu?

Once again:

Thế bạn cũng nạp a với n kia, a với n cũng là biến đấy. Nhưng bạn thấy có làm sao không?

nhưng i nó chạy từ 0 đến n ,anh trai hiểu ý e ko ạ ,còn a vs n nó cũng là mình nạp nhưng nó rõ ràng đó rồi,em hiểu chỗ đó

Nó nạp nhiều lần thôi.

for (int i=0; i<n; i++)
    fun(a, n, i);

tương đương với

fun(a, n, 0);
fun(a, n, 1);
fun(a, n, 2);
...
fun(a, n, n-1);
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?