Bài tập về mảng 2 chiều

chào mọi người ạ
em có đoạn code như này ạ. cho em hỏi ở phần tích nó lỗi ở đâu mà khi tính nó nhân hết vào chứ không nhân theo điều kiện ạ. Với nếu muốn tính trung bình cộng các phần tử lớn nhất ở các cột chẵn thì viết sao ạ? em cảm ơn

#include <stdio.h>
 
	void NhapMaTran(int a[][100], int m, int n);
	void XuatMaTran(int a[][100], int m, int n);
	 
	int main(){
	int a[100][100];
	int m,n,i,j;
	printf("nhap so hang n = "); scanf("%d",&n);
	printf("nhap so cot m = "); scanf("%d",&m);
	printf("nhap vao ma tran:\n");
	NhapMaTran(a, m , n);
	printf("ma tran vua nhap la:\n");
	XuatMaTran(a, m, n);
	    // Dua ra man hinh tich cac phan tu trong khoang(1;10] va [20;50]
	int s=1;
	for( i = 1; i <=m; i++)
	{
	    for(j = 1; j <=n; j++)
	        {if (1<a[i][j]<=10)
	       	{
	        	if(20<=a[i][j]<=50)
	            s=s*a[i][j];
	        	}
	    	}
	} 
	    printf("\ntich=%d",s);
	}
	    //tinh tong 
//	    	int sum=0;
//	   int max = 0,i,j;
//	   for(i = 1; i <=m; i++)
//	      {
//		  for(j = 1; j <=n;j++)
//	      {if (j%2==0)
//	      	if(a[i][j]>max)
//	            max = a[i][j];
//				sum+=a[i][j];
//			}
//	   return sum;
//	}
//	}
	
	void NhapMaTran(int a[][100], int m, int n)
	{	int i,j;
	    for(i = 1; i<=m; i++)
	    {
		for(j = 1; j<=n; j++)
	      {
	         printf("A[%d][%d] = ", i, j);
	         scanf("%d", &a[i][j]);
	      }
		}	
	}
	void XuatMaTran(int a[][100], int m, int n)
	{	int i,j;
	   for(i = 1; i<=m; i++)
	   {
	      for(j = 1; j<=n; j++)
	    printf("%d\t", a[i][j]);
	      printf("\n");
	   }
	}

tại vì như vầy
giả sử dãy các số bạn tìm là 1 2 3 4
thì 1 > 0 sum tính thêm 1
2 > 1 sum tính thêm 2
cứ thế thì sẽ thành tổng all rồi

bạn để sum ở ngoài vòng for thứ 2 có vẻ hợp lí hơn

1 Like

anh cho em hỏi cái hàm tính tích với ạ
nó tính tích hết các không theo điều kiện ạ

hm bạn thử tách cái điều kiện đó ra làm 2 xem sao thay vì 1 <= a <= 4 thì bạn thay thành a >=1 && a <= 2 xem sao
mình chưa học c nên mình k biết


mình test đc r này bạn

1 Like

a test ở điều kiện gì ạ

ko mình chỉ tách đôi điều kiện của bạn ra thôi
if(20<=a[i][j] && a[i][j]<=50)

1 Like

vâng em cảm ơn anh ạ

anh gì chứ mình mới học lập trình thôi

1 Like

thế thì kèm thêm mình với được không

mình là ốc thôi , cũng đang học sm để thi cuối kì này có bài gì hay bạn post lên mình sẽ vào hóng

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