Дополнение к первому своему ответу:
Если число, которое нужно возвести в степень отрицательное (у нас это число A), то дополнительно в цикле нужно проводить следующую операцию: следить за тем, чтобы знак инвертировался, то есть менялся на противоположный.
То есть если степень N является чётным числом, то ответ у нас получится |A| (А по модулю), а если нечётным, то просто А. Для этого можно ввести дополнительную переменную ZNAK, над которой в цикле будем производить действие ZNAK= -ZNAK и в конце программы эта переменная остановится на значении, показывающем нужный нам знак ответа.
Я решил вставить нашу подпрограмму UMNOJITYNAZ в основную программу просто как код. В первом ответе я написал это как подпрограмму чтобы можно было легче разобраться, а теперь так, потому, что в данном алгоритме подпрограмма по сути и не нужна. Она могла бы пригодиться, если бы у нас эта программа была бы просто частью другой, более крупной программы и к этой подпрограмме обращались бы ещё из других мест.
Всё получилось в одной программе:
Перед началом программы необходимо занести целые значения в переменные A и N, например:
A = -2
N = 5
Потом мне стало интересно, а работоспособна ли программа. Я ввёл её на Visual Basic6. Получилось, что при A>0 работало, а при A<0 ответом был 0. Тогда я стал искать, где загвоздка, потом понял и добавил в программу ещё одну строку, эту:
IF A<0 Then A=-A
Ошибка была в том, что мы на наши алгоритмы сложения подавали отрицательное число, но эта строка всё исправила, теперь у нас знак хранился отдельно, в переменной ZNAK, а сам модуль числа А хранился в переменной A.
Вот как эта программа выглядит на Visual Basic6:
Строка A = -2: N = 5 обозначает занесение чисел в A и N.
Dim ZNAK As Integer, A As Integer, X As Integer
Dim I As Integer, N As Integer, Y As Integer, P As Integer
Dim Z As Integer, j As Integer, SUMMA As Integer
Private Sub Command1_Click()
A = -2: N = 2
ZNAK = 1
P=1
If A < 0 Then P = -1
If A < 0 Then A = -A
X = 1
For I = 1 To N
Y = X
Z = A
SUMMA = 0
For j = 1 To Z
SUMMA = SUMMA + Y
Next j
If P < 0 Then ZNAK = -ZNAK
X = SUMMA
Next I
If ZNAK = -1 Then X = -X
If A = 0 Then X = 0
Print X
End Sub
Там для вывода результата нужно создать кнопку Command1 и при запуске программы на неё нажимать, чтобы ответ в верхнем левом углу загорелся.
Причём я заметил, что даже 0 в степень 0 как-то даёт ответ 1, поэтому добавил ещё одну строку в конец: If A = 0 Then X = 0
Теперь программа работает безошибочно для всех целых чисел.