Чтобы сделать массив C
двумерным, его нужно выразить как C[100][100]
вместо C[200]
.Это первый шаг.Далее, в вашей функции Mix()
вам нужно циклически проходить через каждый элемент как A
, так и B
(например, два цикла for
).Ваши строки изменяются при изменении B
, а столбцы - при изменении A
.Включите проверку идентичных индексов, которая определит, добавлять ли или умножать два значения вместе.
void Mix(int A[], int B[], int C[][], int N, int M) {
// rows is the index for the B array, cols is index for A array
for (int rows = 0; rows < M; rows++) {
for (int cols = 0; cols < N; cols++) {
if (rows == cols) { // remember ==
C[rows][cols] = B[rows] * A[cols];
} else {
C[rows][cols] = B[rows] + A[cols];
}
}
}
}
Убедитесь, что ваши массивы определены правильно, и распечатайте массив C по строкам и столбцам в соответствии со спецификациями.
ОБНОВЛЕНИЕ: Если вы хотите использовать циклы while
, я по умолчанию буду деконструировать циклы for
и применять ту же логику:
void Mix(int A[], int B[], int C[][], int N, int M) {
// rows is the index for the B array, cols is index for A array
int rows = 0;
int cols = 0;
while (rows < M) {
while (cols < N) {
if (rows == cols) { // remember ==
C[rows][cols] = B[rows] * A[cols];
} else {
C[rows][cols] = B[rows] + A[cols];
}
cols++; // increment here
}
rows++; // increment here
}
}
Я определенно рекомендую for
Циклический подход, поскольку он более компактен, но выполняет те же самые операции.