Пытаюсь возвести в степень , алгоритм такой : ввожу число,( сохраняю в массиве в обратном порядке , где нулевой элемент – это количество цифр числа , а остальное сами цифры числа , записанные в обратном порядке с начала массива) ввожу степень , и копирую оригинальный массив в сv и сv2 и и вызываю функцию n-1 раз , в которой передаю указатели на массивы , потом умножаю их в функции и записываю результат в массив y ,в главной программе копирую в cv y ,чтобы при новом вызове функции то же самое введенное число пользователем(которое было сохранено в а и сохранено в cv ) умножилось на результат первого умножения (то есть cv на cv2) И вроде бы ответ почти правильный ,но при вводе 15 в 3 степени получается 57600 , а не 50625
void stepen(int* cv, int* cv2,int* y) { int u = 0, k = 0, j = 0, i = 0,cr=0,v=0,t=0; cr = 0; for (i = 1; i <= cv[0]; i++) { for (j = 1; j <= cv2[0]; j++) { cr = cv[i] * cv2[j]; k = i + j - 1; while (cr > 0) { cr = cr + y[k]; y[k] = cr % 10; cr = cr / 10; if (k > y[0]) y[0] = k; k = k + 1; } } } } case'^': { int n = 0; int cv[N+5]; int cv2[N+5]; printf("Enter the first number "); readlong(a); printf("\nEnter the stepen "); scanf_s("%d", &n); for (i = 0; i < N+5; i++) { cv[i] = a[i]; cv2[i] = a[i]; } for (t = 0; t < n-1; t++) { stepen(cv, cv2, y); for (zxc = 0; zxc < N + 5; zxc++) { cv2[zxc] = 0; cv2[zxc] = y[zxc]; } } writelong(y); break; }