Я пишу программу на C для вычисления квадратного массива, возведенного в степень N.
Я бы хотел написать их в отдельных функциях, чтобы сохранить их в чистоте.У меня есть функция
arrMult(int M, int R[M][M], int X[M][M], int out[M][M])
, которая по существу делает out = R*X
.Чтобы поднять его до некоторой N-й степени, я написал эту функцию:
int arrNthPow(int M, int N, int R[M][M], int out[M][M])
{
// Initialize
arrPrint(M, M, out);
arrMult(M, R, R, out);
for (int i = 1; i < N - 1; i++){
arrPrint(M, M, out);
arrMult(M, R, out, out);
}
return 0;
}
Однако я понимаю, что это не дает ожидаемого результата.Вместо этого, если я наберу
arrMult(M, R, R, out1);
arrMult(M, out1, R, out2);
arrMult(M, out2, R, out3);
out3
, я получу ответ, который ищу.Я предполагаю, что мне нужно каким-то образом использовать указатели для копирования значения каждого вывода массива после arrMult
, прежде чем снова использовать arrMult
для следующей итерации, но я не уверен, как.
Яоднако, он не очень хорошо знаком с указателями и понятия не имеет, как его написать, не копируя значения в переменную temp
и не используя дополнительные циклы for.