Вычисление формулы
Будьте добры, напишите на C++ циклический алгоритм к приведённой на рисунке задачи. То бишь, поделитесь, пожалуйста, точкой зрения, как выглядит цикл, который перебирает компоненты таким образом, чтобы удовлетворить данное условие.
Моя идея использования вложенных циклов результировалась в неуместную последовательность:
#include <iostream>
using namespace std;
int main()
{ int i,j,res=0, n;
cin >> n; cout << endl;
srand(time(0));
int* a = new int [n];
for (i=0; i<n; i++)
{ a[i]=rand()%21-10;
cout << a[i] << " ";
}
cout << endl;
for (j=n-1; j>=0;j--)
{
cout << a[j] << " ";
}
cout << endl;
// В итоге последовательность: a1*a1, a1*a2, a1*a3, a1*a5, a2*a1 ...
for (i=0; i<n; i++)
{
for (j=n-1; j>=0;j--)
{
res = a[i]*a[j];
cout << res << " "; }}
delete []a;
return 0;
}
Определённые предположения с задействованием цикла while, затем нижеприведённого "скелета" циклического алгоритма...
for (var=0; var<n; var++)
{ for (i=0; i<n; i++) {}
for (j=n-1; j>=0;j--) {}
}
...оказались так же неудовлетворительны.
Мне удалось отдельно вывести на консоль последовательность a1, a2, ..., a30 и последовательность a30, a29, ...,a1:
#include <iostream>
using namespace std;
int main()
{ int i, n;
cin >> n;
int* a = new int [n];
for (i=0; i<n; i++)
{ a[i]=rand()%21-10;
cout << a[i] << " ";
}
cout << endl;
{ for (i=n-1; i>=0;i--)
cout << a[i] << " "; }
delete []a;
return 0;
}
Решение к задаче должно являться единственным числом. Какой шаг стоит предпринять дальше?
Ответы (2 шт):
Непонятно, при чем тут последовательность b, упомянутая в задаче.
for (i = 0; i < n; i++)
{
res = res + a[i] * a[n - 1 - i];
}
Раз уж у нас С++...
int* a = new int [n];
...
cout << inner_product(a,a+n,reverse_iterator(a+n),0);
