题目要求
建立一个矩阵类Array,存储一个4×4矩阵并能完成矩阵顺时针旋转 90°的运算
(1) 私有数据成员
int *x;指向存储一个 4*4 矩阵值的内存区域(二维数组作为一维数组来存放)。
(2) 公有成员函数
void print():按行输出矩阵的值。
void change():顺时针旋转 900的运算。
Array(int(*p)[4]) 初始化私有的数据成员。
~Arrray() 释放对象存储矩阵时所用内存空间。
(3)编写一个程序测试类,说明(声明)Array对象A,将一个矩阵存入对象A中,并输出矩阵的值,顺时针旋转 90° 对象A中的矩阵并输出。使用以下测试数据
输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
输出
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
代码展示.
#include<iostream>
#include <iomanip>
using namespace std;
class Array //创建Array类
{
private:
int b[4][4]; //新创建一个数组装传入的数据
public:
Array(int(*p)[4]);
friend void operator +(Array& b); //定义顺时针翻转
friend void operator -(Array& b); //定义逆时针翻转
void print();
~Arrray()
{
delete[] {};
}
};
Array::Array(int(*p)[4]) //通过遍历给Array内的b[][]赋值
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
b[i][j] = p[i][j];
}
cout << endl;
}
}
void operator +(Array& b)
{
int i, j, t;
int c[4][4];
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
{
c[i][j] = b.b[i][j];
}
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
{
b. b[i][j] =c[3-j][i];
}
}
void operator -(Array& b)
{
int i, j, t;
int c[4][4];
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
{
c[i][j] = b.b[i][j];
}
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
{
b.b[i][j] = c[j][3-i];
}
}
void Array::print()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
cout << setw(4) << right << b[i][j];
}
cout << endl;
}
}
int main()
{
int a[4][4];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
cin >> a[i][j];
cout << "next" << endl;
}
Array f(a);
f.print();
operator+(f);
f.print();
operator -(f);
f.print();
return 0;
}