Доброго времени суток.
Нуждаюсь в вашей помощи.
Помогите пожалуйста дополнить комментарии к программе. Комментарии уже имеются, но как оказалось нужно по максимуму описать программу
Код:
#include <iostream>
int main()
{
int a[2][2]; int b[2][2]; int r[2][2];
a[0][0]=1;
a[0][1]=1;
a[1][0]=1;
a[1][1]=0;
b[0][0]=1;
b[0][1]=0;
b[1][0]=0;
b[1][1]=1;
int n=5; // объявляем n, n- степень возведения
r[0][0]=0;
r[0][1]=0;
r[1][0]=0;
r[1][1]=0;
cout << r;
while ( n != 0 ) // до тех пор пока n не равно 0
{
if (n%2==0) // если n - четное
{ cout <<"then";
n=n/2; // делим n на 2
for (int i=0; i<2; ++i)
{ // возводим матрицу а в квадрат
for (int j=0; j<2; ++j)
{
int s=0;
for (int l=0; l<2; ++l) // параметр возрастания
{
s+=a[i][l]* a[l][j];
}
r[i][j]=s; // помещаем результат в r
}
}
for (int i=0; i<2; ++i) // происходит обновление a
{
for (int j=0; j<2; ++j)
{
a[i][j]=r[i][j];
}
}
}
else // в противном случае, когда n - нечетно
{ cout <<"else";
n=n-1; // производим вычитание n-1
for (int i=0; i<2; ++i)
{ // перемножаем b и a
for (int j=0; j<2; ++j)
{
int s=0;
for (int l=0; l<2; ++l)
{
s+=b[i][l]* a[l][j];
}
r[i][j]=s; // результат опять помещаем в r
}
}
for (int i=0; i<2; ++i) // теперь происходит обновление b
{
for (int j=0; j<2; ++j)
{
b[i][j]=r[i][j];
}
}
}
}
cout<<b; // выводим конечный результат b
}