已知前提条件有:
1. 内容是一个0到65535的数值.
2. 对应的二维表有很多个, 而且每个表的ROW COUNT和COLUMN COUNT都不固定.
3. 原始表格数据文件格式
a. 原始文件是文本格式, 文本行与上表相对应.
b. 每行由多个单词构成,单词之间由空格及制表符(TAB)的组合来分割.
c. 第一行的单词用于定义COLUMN VALUE的命名
d. 从第二行开始, 每文本行对应二维表的一行. 第一个单词定义ROW VALUE的命名.从第二个单词开始, 每个单词均由数字构成, 描述二维表的内容.
e. 空文本行表示二维表格结束.
根据上面的表格, 下面是原始数据:
AAA BBB CCC DDD
AAA 0 1 1 4
BBB 2 2 5 3
CCC 8 7 6 6
DDD 9 9 9 9
4. 输出格式要求:
生成C语言格式的描述. 包含ROW VALUE定义, COLUMN VALUE定义及二维表数据结构.(根据上面的表格, 下面是个生成的例子)
#define ROW_AAA 0
#define ROW_BBB 1
#define ROW_CCC 2
#define ROW_DDD 3
#define ROW_COUNT 4
#define COLUMN_AAA 0
#define COLUMN_BBB 1
#define COLUMN_CCC 2
#define COLUMN_DDD 3
#define COLUMN_COUNT 4
static <type> nuiTableData_a[][COLUMN_COUNT] = {
0, 1, 1, 4,
2, 2, 5, 3,
8, 7, 6, 6,
9, 9, 9, 9
};
5. 原始表格数据一定是正确的, 不必考虑对原始数据的严格分析判断
6. 根据原始数据得出ROW COUNT和COLUMN COUNT
7. COLUMN VALUE从0开始, 依次递增.
8. ROW VALUE的定义和COLUMN VALUE定义类似, 但需要进行压缩判断.如果两列内容相同, ROW VALUE值也应该一样.
例如原始数据:
…
PPP 0 0 1 1 2
RRR 1 2 2 1 5
QQQ 0 1 2 3 4
SSS 1 2 2 1 5
TTT 9 9 8 8 7
…
那么生成的结果应是:
…
#define ROW_PPP 10
#define ROW_RRR 11
#define ROW_QQQ 12
#define ROW_SSS ROW_RRR
#define ROW_TTT 13
…
题目:
编写一个程序。 读取一个文本表格文件, 并生成另一种格式的文件(C语言格式的H文件), 同时将表格的行列索引(AAA, BBB, CCC…,即ROW VALUE, COLUMN VALUE)以C语言的格式进行定义.