2013-09-25 3 views
-1

У меня есть две 2 одномерные массивы:Как вы сравниваете размеры двух двумерных массивов в C?

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

Я чтения значений из файла:

1 1 2 
2 2 -6 4 5 6 

В каждой строке, первые два числа строк и столбцов размеры для массива , после чего достаточно (произвольных) значений для заполнения массива с использованием этих размеров. То, что я хочу сделать, - после назначения этих значений массивам, проверить, являются ли размеры массивов А и В одинаковыми, поэтому я могу выполнять арифметические операции с ними (добавление, скалярное умножение и т. Д.).

+0

«Пополнить массив» Я предполагаю, что вы имеете в виду в строчном порядке (по крайней мере, я бы так надеялся). Тем не менее. * вы читаете размеры из файла *. Предполагая, что вы читаете их в переменных, есть ли что-то, препятствующее вам сравнивать эти переменные? – WhozCraig

+0

Требования к процедуре 'DimCheck (int A [] [], int B [] [])' для этого назначения ограничивают то, что я могу использовать в качестве параметров. В этом случае они хотят сами массивы как параметры –

ответ

0

Почему вы не храните размеры строк/столбцов для каждой строки в своих переменных?

int Arow, Acol, Brow, Bcol; 

Как правило, это будет работать:

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

Но ваши массивы инициализируются фиксированных размеров.

0 Вы можете подумать об использовании malloc динамически распределенных A и B?

-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 одинаковыми или нет (в этом случае они не являются). То, как это задание настроено, действительно глупо (они всегда есть), но я должен работать с ним таким образом. Я бы не стал так писать, если бы мог помочь. –

Смежные вопросы