題目要求
建立一個矩陣類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;
}