2013-09-25 118 views
-1

我有两个二维数组:如何比较C中两个二维数组的维数?

#define MAXSIZE 10 
/* ... */ 
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE]; 

我在值从文件中读取:

1 1 2 
2 2 -6 4 5 6 

在每一行,前两个数字是行和列大小为阵列之后是足够的(任意)值来填充使用这些大小的数组。我想要做的是,将这些值分配给数组后,检查数组A和B的维数是否相同,以便我们可以对它们进行矩阵运算(加法,标量乘法等)。

+0

通过“填充数组”我假设你的意思是按行排列(至少我希望如此)。这就是说。 *您从文件*中读取尺寸。假设你将它们读入变量,是否有某些东西阻止你比较这些变量? – WhozCraig

+0

对于此分配,程序DimCheck(int A [] [],int B [] [])'的要求限制了我可以用作参数的要求。在这种情况下,它需要数组本身作为参数 –

回答

0

为什么不将每行的行/列大小存储到它们的变量中?

int Arow, Acol, Brow, Bcol; 

通常情况下,这会工作:

int Acol = sizeof(A[0]); 
int Arow = sizeof(A)/Acol; 

但是你的数组初始化为固定的尺寸。

您是否想过使用malloc来动态分配AB

-1

如果你只是想知道,如果两者==尺寸:

#define MAXSIZE 10 
/* ... */ 
int A[MAXSIZE][MAXSIZE], B[MAXSIZE][MAXSIZE]; 

int main(void) 
{ 
    int sizea = sizeof(A); 
    int sizeb = sizeof(B); 
    int result = (sizea == sizeb) ? (1) : (0); 
    return 0; 

} 

即使你不明确写入每个位置,矩阵,你有他们所定义的方式,将是相同的尺寸。

+0

'sizeof(A)'和'sizeof(B)'不会返回相同的结果,因为它们是用'MAXSIZE'初始化的吗? –

+0

是 - 'int A [MAXSIZE] [MAXSIZE],B [MAXSIZE] [MAXSIZE];'保证它。那么,你真正的问题是什么呢? – ryyker

+0

在我的例子中,A是1x1矩阵,B是2x2矩阵。我想检查A和B的尺寸是否相同(在这种情况下它们不是)。这个任务的设置方式真的很愚蠢(他们总是这样),但我必须用这种方式来处理它。如果我能提供帮助,我不会这样编写代码。 –