2013-09-25 116 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的尺寸是否相同(在這種情況下它們不是)。這個任務的設置方式真的很愚蠢(他們總是這樣),但我必須用這種方式來處理它。如果我能提供幫助,我不會這樣編寫代碼。 –