【发布时间】:2016-04-17 06:22:29
【问题描述】:
我的文件如下所示:
01 01 5.00 1.50 7.50
02 01 4.00 3.00 12.00
02 02 3.00 4.00 12.00
03 01 4.50 3.00 13.50
03 01 7.50 2.50 18.75
03 01 6.00 0.50 3.00
04 01 2.00 3.00 6.00
04 02 2.00 3.00 6.00
05 01 1.50 3.00 4.50
07 01 5.00 1.00 5.00
09 01 1.50 6.00 9.00
我正在尝试读取每一行并将每一列数据存储到单独的数组中。像这样的:
int A[100] = {1, 2, 2, 3, 3, 3, 4, 4, 5, 7, 9}
int B[100] = {1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1}
double C[100] = {5.00, 4.00, 3.00, 4.50, 7.50, 6.00, 2.00, 2.00, 1.50, 5.00, 1.50}
double D[100] = {1.50, 3.00, 4.00, 3.00, 2.50, 0.50, 3.00, 3.00, 3.00, 1.00, 6.00}
到目前为止,我有这个:
#include <stdio.h>
#inlcude <stdlib.h>
#define MAXSIZE 100
int main(int argc, char *argv[]) {
int i = 0;
int a, b;
double c, d;
int A[MAXSIZE], B[MAXSIZE];
double C[MAXSIZE], D[MAXSIZE]
while (scanf("%d %d %lf %lf", &a, &b, &c, &d) == 4) {
A[i] = a;
B[i] = b;
C[i] = c;
D[i] = d;
}
return 0;
}
我的问题是如何使用正确的索引将数据列存储在每个数组中?我也一直在使用输入文件重定向:
program.exe < txtfile.txt
这是因为我希望能够读取具有上述数据列的任何类型的文本文件。
赏金信息,因为我发布时看起来不太好:
好的,所以我希望能够查看第一列和第二列是否同时具有重复数字。例如,在第一列中,重复出现的“03”正在下降,而在第二列中,重复出现的“01”正在下降。两者都发生在同一阶段,如下所示:
03 01
03 01
03 01
我希望能够重新认识这一点,如果这是真的,我希望能够对第五列(最右边)的双打求和。我希望它看起来像这样:
01 01 5.00 1.50 7.50
02 01 4.00 3.00 12.00
02 02 3.00 4.00 12.00
03 01 4.50 3.00 ---
03 01 7.50 2.50 ---
03 01 6.00 0.50 35.25
04 01 2.00 3.00 6.00
04 02 2.00 3.00 6.00
05 01 1.50 3.00 4.50
07 01 5.00 1.00 5.00
09 01 1.50 6.00 9.00
否则,我希望程序继续搜索第一/第二列出现。一些额外的背景信息,第一列是房间类型,第二列是房间实例,第五列是这些房间的总面积。这就是我想对最右边的区域求和的原因,因为房间类型与实例相同。
【问题讨论】:
-
为什么要存储在每个带有索引的数组中?
-
添加一个
i++作为while循环内的最后一个语句? -
发布的代码根本无法编译。编译时,始终启用所有警告,然后修复这些警告。 (对于
gcc至少使用:-Wall -Wextra -pedantic我也使用:-Wconversion -std=gnu99) -
正如@kaylum 所说,在循环中递增 I,代码的其他部分看起来不错,您已经将它们存储在数组中。
-
为了便于我们人类阅读和理解:1) 遵循公理:每行只有一个语句,并且(最多)每个语句一个变量声明。