求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成

问题描述:

求一个n*n矩阵主对角线之和,次对角线元素之和.用指针完成

#include <iostream>
using namespace std;

void main()
{
/* 变量定义与初始化 */
int i,j;
int nMainSum = 0;
int nSubSum = 0;
int nSize = 0;
int **arr = NULL;

/* 用户输入,指定矩阵大小 */
cout<<"Input array size:"<<endl;
do 
{
cin>>nSize;
if (0 >= nSize)
{
cout<<"Invalid number,Do it again!"<<endl;
}
} while (0 >= nSize);

/* 为二级指针分配内存 */
arr = new int *[nSize];
for(j = 0; j < nSize; j++)
{
*(arr + j) = new int[nSize];
}

/* 用户输入,给矩阵赋值 */
for (i = 0; i < nSize; i++)
{
for(j = 0; j < nSize; j++)
{
cin>>*(*(arr + i) + j);
}
}

/* 计算主对角线的和 */
for (i = 0; i < nSize; i++)
{
nMainSum += *(*(arr + i) + i);
}

/* 计算次对角线的和 */
for (i = nSize - 1, j = 0; i >= 0, j < nSize; i--, j++)
{
nSubSum += *(*(arr + i) + j);
}

/* 输出结果 */
cout<<"Main sum is:"<<nMainSum<<endl<<"Sub sum is:"<<nSubSum<<endl;

/* 释放内存 */
for(j = 0; j < nSize; j++)
{
delete[] *(arr + j);
}
delete[] arr;
}