PDA

Просмотр полной версии : [Вопрос] Многомерный массив



whybladez
03.04.2020, 14:25
Привет.
Есть массив


new const multiplyZones[][][] = {
{ "65", "16", "10", "31", "15", "32" },
{ "42", "43", "14", "17" },
{ "52", "1", "54" },
{ "41", "40", "21", "55", "18" },
{ "28", "11" },
{ "56", "57" },
{ "0", "24" },
{ "25", "29", "28" },
{ "9", "53" },
{ "2", "3" },
{ "4", "20" },
{ "19", "20", "46", "44" },
{ "7", "27" },
{ "26", "30" },
{ "34", "35", "39" },
{ "58", "59", "66" },
{ "33", "12", "13" },
{ "47", "48", "45", "50", "49" }
};

Как правильно сделать?
Я пробовал, вот мой вариант (нерабочий):


for(new i = 0; i < sizeof(multiplyZones); i++)
{
for(new j = 0; j < sizeof(multiplyZones[]); j++)
{
printf(multiplyZones[i][j]);
}
}

Хочу вывести каждое значение из каждой ячейки

Shaolinka
03.04.2020, 15:33
new const
g_multiply_zones[][] =
{
{65, 16, 10, 31, 15, 32},
{42, 43, 14, 17},
{52, 1, 54},
{41, 40, 21, 55, 18},
{28, 11},
{56, 57},
{0, 24},
{25, 29, 28},
{9, 53},
{2, 3},
{4, 20},
{19, 20, 46, 44},
{7, 27},
{26, 30},
{34, 35, 39},
{58, 59, 66},
{33, 12, 13},
{47, 48, 45, 50, 49}
};

for(new idx = sizeof g_multiply_zones - 1; idx -- > - 1;)
{
for(new idx_1 = sizeof g_multiply_zones[] - 1; idx_1 -- > - 1;)
{
printf("g_multiply_zones[%d][%d]", idx, idx_1);
}
}

// прощу прощение за tabulation

whybladez
03.04.2020, 15:43
warning 224: indeterminate array size in "sizeof" expression (symbol "")
строка: for(new idx_1 = sizeof g_multiply_zones[] - 1; idx_1 -- > - 1;)

- - - Добавлено - - -


new
multiplyZones[MAX_MULTIPLY_ZONES][6] = {
{ 65, 16, 10, 31, 15, 32 },
{ 42, 43, 14, 17, 0, 0},
{ 52, 1, 54, 0, 0, 0},
{ 41, 40, 21, 55, 18, 0 },
{ 28, 11, 0 , 0 , 0 ,0 },
{ 56, 57,0,0,0,0 },
{ 0, 24 ,0,0,0,0},
{ 25, 29, 28,0,0,0 },
{ 9, 53,0,0,0,0 },
{ 2, 3,0,0,0,0},
{ 4, 20,0,0,0,0 },
{ 19, 20, 46, 44,0,0 },
{ 7, 27 ,0,0,0,0},
{ 26, 30,0,0,0,0 },
{ 34, 35, 39,0,0,0},
{ 58, 59, 66,0,0,0},
{ 33, 12, 13,0,0,0 },
{ 47, 48, 45, 50, 49, 0 }
};



for ( new index = 0; index < MAX_MULTIPLY_ZONES; index++ )
{
for(new i = 0; i < 6; i++)
{
if(multiplyZones[index][i] != 0)
printf("Строка: %d, Столбец: %d, Значение: %d",index, i, multiplyZones[index][i]);
}
}

сделал так, просто указал точное количество столбцов и в ненужных столбцах прописал 0
хотя бы работает, но конечно может есть получше способ?)

SteveStage
03.04.2020, 15:57
warning 224: indeterminate array size in "sizeof" expression (symbol "")
строка: for(new idx_1 = sizeof g_multiply_zones[] - 1; idx_1 -- > - 1;)

Укажи размер массиву g_multiply_zones при создании.

Shaolinka
03.04.2020, 16:04
Данный вариант наиболее оптимальный для перебора, можешь использовать while, do while