编程题 #3

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

写一个二维数组类 Array2,使得下面程序的输出结果是:

0,1,2,3,

4,5,6,7,

8,9,10,11,

next

0,1,2,3,

4,5,6,7,

8,9,10,11,

程序:

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. // 在此处补充你的代码
  5. int main() {
  6. Array2 a(3,4);
  7. int i,j;
  8. for( i = 0;i < 3; ++i )
  9. for( j = 0; j < 4; j ++ )
  10. a[i][j] = i * 4 + j;
  11. for( i = 0;i < 3; ++i ) {
  12. for( j = 0; j < 4; j ++ ) {
  13. cout << a(i,j) << ",";
  14. }
  15. cout << endl;
  16. }
  17. cout << "next" << endl;
  18. Array2 b; b = a;
  19. for( i = 0;i < 3; ++i ) {
  20. for( j = 0; j < 4; j ++ ) {
  21. cout << b[i][j] << ",";
  22. }
  23. cout << endl;
  24. }
  25. return 0;
  26. }

输入

输出

0,1,2,3,

4,5,6,7,

8,9,10,11,

next

0,1,2,3,

4,5,6,7,

8,9,10,11,

样例输入

样例输出

  1. 0,1,2,3,
  2. 4,5,6,7,
  3. 8,9,10,11,
  4. next
  5. 0,1,2,3,
  6. 4,5,6,7,
  7. 8,9,10,11,

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. // 在此处补充你的代码
  5. class Array2 {
  6. private:
  7. int * a;
  8. int i, j;
  9. public:
  10. Array2() {a = NULL;}
  11. Array2(int i_, int j_) {
  12. i = i_;
  13. j = j_;
  14. a = new int[i*j];
  15. }
  16. Array2(Array2 &t){
  17. i = t.i;
  18. j = t.j;
  19. a = new int[i * j];
  20. memcpy(a, t.a, sizeof(int)*i*j);
  21. }
  22. Array2 & operator=(const Array2 &t) {
  23. if (a != NULL) delete []a;
  24. i = t.i;
  25. j = t.j;
  26. a = new int[i*j];
  27. memcpy(a, t.a, sizeof(int)*i*j);
  28. return *this;
  29. }
  30. ~Array2() {if (a != NULL) delete []a;}
  31. // 将返回值设为int的指针,则可以应用第二个【】,不用重载第二个【】操作符
  32. int *operator[](int i_) {
  33. return a+i_*j;
  34. }
  35. int &operator()(int i_, int j_) {
  36. return a[i_*j + j_];
  37. }
  38. };
  39.  
  40. int main() {
  41. Array2 a(,);
  42. int i,j;
  43. for( i = ;i < ; ++i )
  44. for( j = ; j < ; j ++ )
  45. a[i][j] = i * + j;
  46. for( i = ;i < ; ++i ) {
  47. for( j = ; j < ; j ++ ) {
  48. cout << a(i,j) << ",";
  49. }
  50. cout << endl;
  51. }
  52. cout << "next" << endl;
  53. Array2 b; b = a;
  54. for( i = ;i < ; ++i ) {
  55. for( j = ; j < ; j ++ ) {
  56. cout << b[i][j] << ",";
  57. }
  58. cout << endl;
  59. }
  60. return ;
  61. }

POJ C++程序设计 编程题#3 编程作业—运算符重载的更多相关文章

  1. POJ C程序设计进阶 编程题#3:运算符判定

    编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个 ...

  2. POJ C++程序设计 编程题#1 编程作业—运算符重载

    编程题 #2 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的MyIn ...

  3. C#编程(四十)----------运算符重载

    运算符重载 所谓的运算符重载是指允许用户使用用户定义的类型编写表达式的能力. 例如,通常需要编写类似与以下内容的代码,入江两个数字相加,很明显,sum是两个数字之和. int i=5,j=4; int ...

  4. 04737_C++程序设计_第9章_运算符重载及流类库

    例9.1 完整实现str类的例子. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...

  5. C++程序设计方法3:数组下标运算符重载

    数组下标运算符重载 函数声明形式 返回类型operator[](参数): 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型 ...

  6. C++第五次作业--运算符重载和函数重载

    C++ 运算符重载和函数重载 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...

  7. POJ C++程序设计 编程题#1 编程作业—STL1

    编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出结 ...

  8. POJ C++程序设计 编程题#3 编程作业—文件操作与模板

    编程题#3: 整数的输出格式 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利 ...

  9. POJ C++程序设计 编程题#2 编程作业—文件操作与模板

    编程题#2: 实数的输出格式 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 ...

随机推荐

  1. Table View滑动时报错

    学习表视图(Table View)的应用时,自己写了个demo,最后表格出来了,可是滑动时报错了,报错如下: 这是我ViewController.m部分的代码: #import "ViewC ...

  2. windowns--HANDLE,

    HANDLE: 在windows程序中,有各种各样的资源(窗口.图标.光标等),系统在创建这些资源时会为他们分配内存,并返回标示这些资源的标示号,即句柄. 句柄指的是一个核心对象在某一个进程中的唯一索 ...

  3. [ActionScript 3.0] AS3.0 调试出现安全沙箱冲突错误解决办法

    提示 *** 安全沙箱冲突 ***到 http://api.map.baidu.com/telematics/v3/weather?location=%E6%88%90%E9%83%BD&ou ...

  4. 动态添加js文件.

    方法一: $.getScript(url,callback); 这个方法是对$.ajax({ })的封装.默认是异步的而且是带有缓存的. 缓存对于用户来说,是个好东西,但是对于开发者来说可就是日了狗的 ...

  5. esriSRProjCSType Constants

    ArcGIS Developer Help  (Geometry)     esriSRProjCSType Constants See Also esriSRProjCS2Type Constant ...

  6. 如何让Form窗体接收KeyDown事件?

    在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息.当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的. 但是当窗体上有其他控件时,会发现窗体再也不会响应 ...

  7. poj 1459 Power Network : 最大网络流 dinic算法实现

    点击打开链接 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20903   Accepted:  ...

  8. 共享池之八:软解析、硬解析、软软解析 详解一条SQL在library cache中解析涉及的锁

    先来张大图: 结合上图来说明一下解析的各个步骤涉及的锁. 软解析.硬解析.软软解析区别的简单说明: 为了将用户写的sql文本转化为oracle认识的且可执行的语句,这个过程就叫做解析过程. 解析分为硬 ...

  9. 项目积累——SQL积累

    select sum(njts)-sum(ysyts) from njsyqk where ygdh='888882' and ((yxbz is null) or (yxbz='1')) selec ...

  10. Spark Job Scheduling

    最近由于项目需要在研究spark相关的内容,形成了一些技术性文档,发布这记录下,懒得翻译了. There are some spaces the official documents didn't e ...