编写程序数据结构

来源:百度知道 编辑:UC知道 时间:2024/09/19 15:51:22
25、 已知一个n×n的上三角矩阵a的上三角元素已按行主序连续存放在数组b中,编写程序,将b中元素按列主序连续存放至数组c中。
a= 1 2 3 4 5
0 6 7 8 9
0 0 10 11 12
0 0 0 13 14
b=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
c=(1,2,6,3,7,10,4,8,11,13,5,9,12,14,15)
能一步一步解释就更好了

#include <iostream>
#include <math.h>
using namespace std;

int main(int argc, char* argv[])
{
int number = 0;
cout << "输入三角矩阵元素个数";
cin >> number;

float fTemp = (sqrtf(8 * number + 1) - 1) / 2; // 根据number反求n
int row = fTemp;
if (row != fTemp )// 判断求出来的行数fTemp是否为整数
{
cout << "输入的元素个数不是一个n*n的三角阵中非零元素个数"<<endl;
cout.flush(); // 输出缓冲区清空
}
else
{
cout << "请按照行主序逐个输入元素,元素之间用空格隔开,以回车表示输入完毕"<< endl;

int *b = new int[number]; // 根据number动态分配b和c数组的空间
memset(b, 0, sizeof(int) * number); // 置零

int *c = new int[number];
memset(c, 0, sizeof(int) * number);

for (int i = 0; i < number; i++) // 从键盘输入,并存储在b数组中
{
cin >> b[i];
}

i = 0;
for (int j = 0; j < row; j++) // 由于是按列主序输出,所以(j + 1)是