Code tính tổng các phần tử đường chéo chính bị sai

Không hiểu sao cái tổng của mình cứ bị thừa 2 đơn vị. Ví dụ tổng là 16 thì nó xuất 18. Ae xem hộ mình với.

#include <stdio.h>
int a[100][100];
int m, n;
void nhapMaTran(int x[][100], int &m, int &n)
{
	do
	{
		printf("Nhap vao m va n cho ma tran vuong: ");
		scanf("%d%d", &m, &n);
	}
	while(m<=0 || n<=0 || m != n);	
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
		{
			printf("x[%d][%d]=", i, j);
			scanf("%d", &x[i][j]);
		}
	}
}
void xuatMaTran(int x[][100], int m, int n){
	printf("\nMa tran: \n");
	for(int i=0; i<m; i++){
		for(int j=0; j<n; j++){
			printf("%d\t", a[i][j]);
		}
		printf("\n");
	}
}
int SumDuongcheochinh (int a[][100], int m, int n)
{
	int s, i, j;
	for (i = 0; i < m; i++) 
	{
    	for (j = 0; j < n; j++) 
		{
        	if (i == j)
            	s = s + a[i][j];
    	}
	}
	return s;
}
int main()
{
	nhapMaTran(a, m, n);
	xuatMaTran(a, m, n);
	printf ("Tong cac phan tu duong cheo chinh: %d", SumDuongcheochinh (a, m, n));
}

hình như sai ở chỗ s=s+a[i][j] sửa lại thành a[i][i] thử

1 Like

Thực tế thì bạn không cần phải cho chạy vòng lặp kép, chỉ cần chạy như sau:

    int sum = 0;
	for (int j = 0; j < n; j++)
	{
		sum += arr[j][j];
	}

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