Сначала (до i=5) удваиваются элементы массива 1, 2, 3, 4, 5. Получается соответственно 2, 4, 6, 8, 10. Затем, с i=6 удваиваются полученные значения (в обратном порядке). Получается 20, 16, 12, 8, 4.
Можно это всё расписать подробно, по шагам:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1 шаг цикла:
A [10] := 2*A[1]
1, 2, 3, 4, 5, 6, 7, 8, 9, 2
2 шаг:
A [9] := 2*A[2]
1, 2, 3, 4, 5, 6, 7, 8, 4, 2
3 шаг:
A [8] := 2*A[3]
1, 2, 3, 4, 5, 6, 7, 6, 4, 2
4 шаг:
A [7] := 2*A[4]
1, 2, 3, 4, 5, 6, 8, 6, 4, 2
5 шаг:
A [6] := 2*A[5]
1, 2, 3, 4, 5, 10, 8, 6, 4, 2
6 шаг:
A [5] := 2*A[6]
1, 2, 3, 4, 20, 10, 8, 6, 4, 2
7 шаг:
A [4] := 2*A[7]
1, 2, 3, 16, 20, 10, 8, 6, 4, 2
8 шаг:
A [3] := 2*A[8]
1, 2, 12, 16, 20, 10, 8, 6, 4, 2
9 шаг:
A [2] := 2*A[9]
1, 8, 12, 16, 20, 10, 8, 6, 4, 2
10 шаг:
A [1] := 2*A[10]
4, 8, 12, 16, 20, 10, 8, 6, 4, 2
Ответ: 8
#include <iostream>
#include <ctime>
#include <vector>
#include <numeric>
using namespace std;
void print_vector(vector<float> vec, int n) {
cout << endl;
for (float v : vec) {
cout << v << " ";
}
}
void print_vector_vectors(vector<vector<float>> const& mat) {
for (vector<float> row : mat) {
for (float val : row) {
cout << val << " ";
}
cout << endl;
}
}
vector<float> input_vector(vector<float> vec, int n) {
int elem;
for (int i = 0; i < n; i++) {
cin >> elem;
vec.push_back(elem);
}
return vec;
}
vector<float> input_vector_auto(vector<float> vec, int n) {
for (int i = 0; i < n; i++) {
vec.push_back(rand() % 7 - 5);
}
return vec;
}
float take_abs_in_vector(vector<float> vec) {
float sum = 0;
int size = 1;
for (int i = 0; i < vec.size(); i++) {
sum += abs(vec[i]);
}
float aver = sum / vec.size();
return aver;
}
vector<float> check_and_set_vector_abs(vector<float> vec, double abs1) {
if (vec.size() == 1)
return {-100000};
for (int i = 0; i < vec.size(); i++) {
if (abs(vec[i]) > abs1) {
vec[i] = abs1;
}
}
return vec;
}
bool check_truly_sequence_negative(vector<float> vec) {
int first;
int second;
int next;
int i = 2;
bool key1 = false;
bool key2 = false;
if (vec.size() == 1) //закомментить, если нужны единичные последовательности
return false;
if ((vec.size() == 2) && (vec[0] == vec[1])) // закомментить если нужны последовательности с одинаковым шагом в нуль
return false;
for (int val : vec) {
if (!key2 && key1) {
second = val;
key2 = true;
continue;
}
if (!key1) {
first = val;
key1 = true;
continue;
}
if (val - second != second - first) {
return false;
}
else {
first = second;
second = val;
continue;
}
}
return true;
}
vector<vector<float>> get_sequences_negative(vector<float> vec, int n) {
vector<vector<float>> vecs;
vector<float> vec1;
int index = 0;
for(const auto& v : vec){
if (v < 0) {
vec1.push_back(v);
continue;
}
else {
//print_vector(vec1, vec1.size());
if (check_truly_sequence_negative(vec1)) {
//if (check_truly_sequence_negative(vec1)) {
vecs.push_back(check_and_set_vector_abs(vec1, take_abs_in_vector(vec1)));
}
vec1.clear();
continue;
}
}
return vecs;
}
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));
vector<float> vec;
vector<vector<float>> vec_vecs;
vector<float> const_vec = { -1,-2,-3,4,5 };
int n;
cout << "Введите количество элементов в массиве: ";
cin >> n;
vec = input_vector_auto(vec, n);
print_vector(vec, n);
vec_vecs = get_sequences_negative(vec, n);
print_vector_vectors(vec_vecs);
}
plus=3; //на какое число далее будем прибавлять
start=0; //с какого числа начинаем сложение, и на каком сейчас
stop=33; //где кончаем прибавлять
while(status=true){
if(start<=stop){
//log это команда обрабатывающая результат если надо
function log(res){
start=start+res;
plus=start+res+3;
} // ну как там функции создаются...
log(start+plus);}else{
status=false;}}
P.s это что-то среднее между JS и PHP