Я бы порекомендовал вам разбить эту сложную проблему на более мелкие.
Создайте меньшие функции, протестируйте их, чтобы убедиться, что они работают, а затем выполните следующий шаг, вызывая их, пока не получите полный набор.
Вам нужно начать с матрицы: a[m][n]
.Должны ли значения, которые он содержит, быть целыми, плавающими, двойными?Убедитесь, что вы можете создать матрицу разных размеров.Какими должны быть ваши ограничения на строки и столбцы?
Начните с методов чтения и записи вашей матрицы.
Далее приведен метод умножения двух матриц: c[m][n] = a[m][k]*b[k][n]
.Количество столбцов в a
соответствует количеству строк в b
, или вы не можете умножить.
Повышение матрицы до целой степени p > 1
означает умножение начальной матрицы на себя p
раз.Видите ли вы, что одним требованием является то, что начальная матрица должна быть квадратной?(# строки == # столбцы) Если это не так, вы не можете повысить до целочисленной степени.
Вам понадобится цикл для повышения до степени p раз.Вы будете вызывать метод умножения матриц c = mult(a, b)
каждый раз в цикле.Каждый проход будет принимать вывод из предыдущего вызова и делать его первой матрицей в вызове: c = mult(c, b)
.
Если вы атакуете проблему таким образом, вы сможете ее решить.Обязательно тщательно проверяйте каждый шаг, прежде чем двигаться дальше.
Это называется декомпозицией.Это основа для решения проблем в целом и компьютерных наук в частности.