编程题#1

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

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

描述

实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组,使得下面程序输出结果是:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,

注意,只能写一个类模版,不能写多个。

#include <iostream>
using namespace std;
// 在此处补充你的代码
int main()
{
CArray3D<int> a(3,4,5);
int No = 0;
for( int i = 0; i < 3; ++ i )
for( int j = 0; j < 4; ++j )
for( int k = 0; k < 5; ++k )
a[i][j][k] = No ++;
for( int i = 0; i < 3; ++ i )
for( int j = 0; j < 4; ++j )
for( int k = 0; k < 5; ++k )
cout << a[i][j][k] << ",";
return 0;
}

输入

输出

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,

样例输入

样例输出

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,

提示

提示:类里面可以定义类,类模版里面也可以定义类模版。例如:

class A
{
class B { };
}; template
class S
{
T x;
class K {
T a;
};
};

 #include <iostream>
using namespace std;
// 在此处补充你的代码
template <class T>
class CArray3D {
public:
template <class T1>
class CArray2D {
private:
T1 *a;
int i,j;
public:
CArray2D() {a = NULL;}
CArray2D(int a1, int a2):i(a1),j(a2) {
a = new T1[i*j];
}
~CArray2D() {
if (a != NULL) delete []a;
}
T1 *operator[](int a1) {
return a + a1*j;
}
};
CArray3D() {array2D = NULL;}
CArray3D(int a1, int a2, int a3) {
array2D = new CArray2D<T>*[a1];
for (int m = ; m < a1; ++m) {
array2D[m] = new CArray2D<T>(a2, a3);
}
}
CArray2D<T> &operator[](int i) {
return *array2D[i];
}
~CArray3D() {
if (array2D != NULL) delete []array2D;
}
private:
CArray2D<T> **array2D;
};
int main()
{
CArray3D<int> a(,,);
int No = ;
for( int i = ; i < ; ++ i )
for( int j = ; j < ; ++j )
for( int k = ; k < ; ++k )
a[i][j][k] = No ++;
for( int i = ; i < ; ++ i )
for( int j = ; j < ; ++j )
for( int k = ; k < ; ++k )
cout << a[i][j][k] << ",";
return ;
}

最新文章

  1. [译]Godot系列教程三 - 场景实例化(续)
  2. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
  3. 【BZOJ】3521: [Poi2014]Salad Bar
  4. java中包命名常见规则
  5. css背景图片,bootstrap和jquery-ui结合使用,dialog案例
  6. Mac OS X Terminal 101:终端使用初级教程
  7. Java基础-常量
  8. centos(linux) 下如何查看端口占用情况及杀死进程
  9. HBase HFile
  10. Exp3 免杀原理与实践 20164314 郭浏聿
  11. 第30月第18天 autolayout代码
  12. Kotlin入门(26)数据库ManagedSQLiteOpenHelper
  13. missing seperator error when [make all]
  14. 23.week4
  15. Apache Ignite 学习笔记(一): Ignite介绍、部署安装和REST/SQL客户端使用
  16. NTP国内时钟服务器
  17. UVa 11235 频繁出现的数值
  18. TypeScript 小记
  19. Windows网络编程Internet Gopher了解下
  20. Linux useradd 与 adduser的区别, /sbin/nologin 与 /bin/bash

热门文章

  1. Java中数字操作
  2. free 查看系统内存
  3. ElasticSearch 常用的查询过滤语句
  4. Python 描述符(descriptor) 杂记
  5. ReverseBits
  6. C - Fractal(3.4.1)
  7. Java的四种引用
  8. 启用 CORS 来解决这个问题(ajax跨域请求)
  9. Fragments | Android Developer
  10. CPPUTest 单元测试框架(针对 C 单元测试的使用说明)