01/10/2018, 11:30

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

HK boy viết 13:38 ngày 01/10/2018

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ế?

Vinh viết 13:35 ngày 01/10/2018

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 ạ

HK boy viết 13:43 ngày 01/10/2018

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.

Vinh viết 13:34 ngày 01/10/2018

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

HK boy viết 13:43 ngày 01/10/2018

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

Vinh viết 13:41 ngày 01/10/2018

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

HK boy viết 13:41 ngày 01/10/2018

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.

Vinh viết 13:33 ngày 01/10/2018

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

HK boy viết 13:45 ngày 01/10/2018

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


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.

[spoiler]douma thằng nào code cái này thế [/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.

Vinh viết 13:32 ngày 01/10/2018

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 ạ

HK boy viết 13:38 ngày 01/10/2018

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”.

Vinh viết 13:34 ngày 01/10/2018

PhanTuXuatHienMax(a, n, i);

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

HK boy viết 13:41 ngày 01/10/2018

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

Vinh viết 13:46 ngày 01/10/2018

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 ạ

Vinh viết 13:46 ngày 01/10/2018

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

Vinh viết 13:32 ngày 01/10/2018

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

HK boy viết 13:36 ngày 01/10/2018

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

Once again:

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ế?

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

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?

Vinh viết 13:40 ngày 01/10/2018

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ỗ đó

HK boy viết 13:35 ngày 01/10/2018

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);
Vinh viết 13:44 ngày 01/10/2018

anh trai thật nhiệt tình ,em cũng hiêu phần nào rồi ,do anh trai giảng ko đúng trọng tâm nên nãy h tốn time quá
thank a nha

Bài liên quan
0