Tính tổng đường chéo

Ai help mình fix lỗi đường chéo phụ với đường chéo chính với nó bị lỗi khi chạy.

#include<iostream>
using namespace std;
int main()
{
    int tong4;
    int tong3;
    int i,j,m,n;
    int a[50][50];
    cout << "Nhap so dong : ";
    cin >> m;
    cout << "Nhap so cot : ";
    cin >> n;
// Nhap mang 2 chieu
    for (int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]= ";
            cin>> a[i][j];
        }
    }
// xuat mang 2 chieu
    cout<<"Xuat Mang"<<endl;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {

            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
// Tong cac phan tu
    int tong1 = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++) // Duyet cac cot
        {
            tong1 = tong1 + a[i][j]; // tong = tong + a[i][j]
        }

    }
    cout<<"\n Tong cac phan tu la  : "<<tong1;
// Tong dòng

    for (int i = 0; i < m; i++)
    {
        int tong2 = 0;
        for (int j = 0; j < n; j++) // Duyet cac cot
        {
            tong2 += a[i][j]; // tong = tong + a[i][j]
        }
        cout<<"\n Tong cua dong thu "<<i<<" : "<<tong2;
    }

//Tong cot
    for (int i = 0; i < m; i++)
    {
        int tong = 0;
        for (int j = 0; j < n; j++) // Duyet cac cot
        {
            tong += a[i][j]; // tong = tong + a[i][j]
        }
        cout<<"\n Tong cua cot thu "<<i<<" : "<<tong;
    }
    cout<<"."<<endl;
//Duong cheo phu
for (i = 0; i < m ;i++)
            {
                for (j = 0; j < m ;j++)
                {
                    if (i+j == n-1)
                    {
                        tong3 = tong3 + a[i][j];
                    }

                }
            }
            cout<<"Tong cua duong cheo phu la :"<<tong3<<endl;
//Duong cheo chinh
for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (i == j)
                tong4 = tong4 + a[i][j];
        }
    }
            cout<<"Tong cua duong cheo chinh la : "<<tong4<<endl;
// tim max
    int max = a[0][0];
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (a[i][j] > max)
                max = a[i][j];
        }
        cout <<"\nMax cua dong "<<i<<"  = " << max << endl;
    }

    return 0;
}

Quan trọng lắm: lỗi gì?

2 Likes

Nó lổi phần dường chéo phụ

Bạn build và run rồi sẻ thấy

Ma trận vuông mới có đường chéo phụ chứ :smiley:

Thực ra bạn cần định nghĩa đường chéo bạn muốn thật kĩ, do có hai trường hợp.

3 Likes

Bác chạy 1 vòng lặp chỗ đoạn đường chéo là đủ rồi tong4 += a[i][i]

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