Code tìm hàng có phần tử âm nhiều nhất bị sai

mọi người sửa code giúp e vs ạ
nó chỉ in ra hàng cuối cùng có phần tử âm chứ k in ra hàng có phàn tử âm nhiều nhất

//tim hang co nhieu phan tu am nhat
 void phantuam(int a[][10], int h, int c)
 {	
 	int dem,max,vt,i,j;
 	max=0;
 	dem=0;
 	for(i=0;i<h;i++)
 		for(j=0;j<c;j++)
		{
 		if(a[i][j]<0)
 		dem++;
 		if(dem>max)
 		vt=i;
 		max=dem;
 		}

 	cout<<"Hang co phan tu am nhieu nhat la: "<<endl;
 	for(j=0;j<c;j++)
 		cout<<setw(4)<<a[vt][j];
		
 }

image

vì biến dem của bạn sai. bạn debug lại đi.

1 Like

debug lại như nào mới đúng ạ
e sũy nghĩ mãi k ra

phương pháp đơn giản nhất: bạn in giá trị của biến dem ra, ở những chỗ nghi ngờ hoặc sau mỗi 1 dòng lệnh sau nó.
Xem chỗ nào giá trị của nó sai so với mình mong muốn / mình nghĩ

4 Likes

mỗi lần đếm xong bạn so sánh với max rồi thì không chuyển biến đếm về 0 để nó đếm lại từ đầu

if(a[i][j]<0)
 		dem++;
 		if(dem>max)
 		vt=i;
 		max=dem;
 		}

sai ở đoạn này nhá

2 Likes

Bạn nên biết rằng cặp dấu ngoặc nhọn {} rất quan trọng.

Đối với mình, cho dù bên trong điều kiện if hay vòng lặp for, while chỉ có 1 dòng thì mình vẫn dùng cặp ngoặc nhọn bao nó.

5 Likes

Bạn check lại đoạn này thử xem nhé, đặt break point check thử xem thế nào.

1 Like

e cám ơn ạ !!!

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