运算符重载实现二维数组旋转
来源:互联网 发布:网络直播app多少钱 编辑:程序博客网 时间:2024/05/22 01:39
/*定义一个数组类 Array,实现二维数组的旋转。通过重载正号运算符“+”,顺时针旋转 90o,即使元素 b[i][j]变成 b[j][ M-1-i];通过重载负号运算符“-”,逆时针旋转 90o,即使元素 b[i][j]变成 b[M-1-j][i]。具体要求如下: (1)私有数据成员: int b[M][M]; //数据成员,存放数组 (3) 公有成员函数: Array(int (*p)[M]):构造函数,以形参初始化数据成员; void operator +( ):重载函数,使数组顺时针旋转90o; friend void operator -(Array &b):重载函数,使数组逆时针旋转90o; void print():输出数据成员。 (4) 对所定义的类进行测试。要求输出原始数组和旋转之后的数组。 */#include<iostream>using namespace std;class arr{private: int a[3][3],b[3][3];public: arr(int(*p)[3]); void operator + (int ); friend void operator - (arr &bb , int ); void print();};arr::arr(int (*p)[3]){ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { b[i][j] = *(*(p + i) + j); a[i][j] = *(*(p + i) + j); } }}void arr::operator+(int n){ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { b[i][j] = a[j][2 - i]; } } this->print();}void operator - (arr &bb,int n){ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { bb.b[i][j] = bb.a[2 - j][i]; } } bb.print();}void arr::print(){ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << b[i][j] << '\t'; } cout << endl; }}int main(){ int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} }; int(*p)[3] = a; arr arr1(p); arr1.print(); cout << endl; arr1 + 1; cout << endl; arr1 - 1; cout << endl; system("pause"); return 0;}
阅读全文
0 0
- 运算符重载实现二维数组旋转
- 二维数组运算符重载
- []运算符的重载和二维数组类的[][]运算符重载
- 【运算符重载-数组类运算的实现】
- 9-4 流运算符重载运算符(二维数组类Douary)
- 【旧资料整理】c++ 定义矩阵类CMatrix,重载二维数组运算符[][]方法
- C++矩阵类中的运算符重载和二维数组动态申请内存
- Coursera 编程题 #3 运算符重载 写一个二维数组类 Array2心得
- [C++]重载二维数组下标 [ ][ ]实现二维矩阵
- 运算符重载实现数组自加、自减
- 运算符重载实例:数组
- 运算重载实现可变长数组
- 二维数组旋转
- 二维数组旋转模板
- 【二维数组】旋转方阵
- 重载二维数组
- 关于二维数组的翻转与旋转 低端实现
- 简单实现运算符重载
- 8. 树--堆
- Spring任务调度<task:scheduled-tasks>(定时器)
- python解惑之:整数比较
- object.assign函数用法
- Vue警告
- 运算符重载实现二维数组旋转
- 54_RT
- 简易商品购物系统购物界面程序设计
- 阶段性测验遗漏知识点
- 堆-数据结构
- 第二次作业
- 用贪心算法解背包问题(装载问题)
- Markdown常用语法快速入门
- jzoj 1279_解题_dp