建立一个矩阵类Array,存储一个4×4矩阵并能完成矩阵顺时针旋转 90°的运算

建立一个矩阵类Array,存储一个4×4矩阵并能完成矩阵顺时针旋转 90°的运算。

题目要求

建立一个矩阵类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;
}










  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值