У исполнителя Умножитель две команды, которым присвоены номера:
1. умножь на 3
2. прибавь 8
Первая из них увеличивает число на экране в 3 раза, вторая увеличивает число на экране на 8. Составьте алгоритм получения из числа 4 числа 140, содержащий не более 5 команд. В ответе запишите только номера команд. Если таких алгоритмов более одного, то запишите любой из них.
2.
У исполнителя Квадратор две команды, которым присвоены номера:
1. Уменьшает число в 2 раза
2. Прибавляет к числу 3
Первая из них уменьшает число в 2 раза, вторая прибавляет к нему 3. Составьте алгоритм получения из числа 4 числа 7, содержащий 5 команд. В ответе запишите только номера команд.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-20,20).Select(i->i/10).ToArray;
Write('Массив: '); a.Println;
Writeln('Сумма элементов с нечетными номерами: ',
a.Where((x,i)->i.IsEven).Sum);
var i1:=a.FindIndex(x->x<0);
var i2:=a.FindLastIndex(x->x<0);
Write('Вторая искомая сумма: ');
if i2=i1 then Writeln(0)
else Writeln(a[i1+1:i2].Sum);
Write('Сжатый массив: ');
a:=a.Where(x->abs(x)>1).ToArray; a.Println;
end.
Пример
n= 10
Массив: 1.8 0.2 1 -2 0.1 0.4 -1 1.2 -1.4 0.6
Сумма элементов с нечетными номерами: 0.5
Вторая искомая сумма: 0.7
Сжатый массив: 1.8 -2 1.2 -1.4
===== С++ 17 =====
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double *a = new double[n];
srand(time(NULL));
for(int i = 0; i < n; i++)
{
a[i] = rand() * 10.0 / RAND_MAX - 5;
cout << a[i] << " ";
}
cout << endl;
// - 1 -
double s = 0;
for(int i = 0; i < n; i += 2)
s += a[i];
cout << "Сумма элементов с нечетными номерами равна " << s << endl;
// - 2 -
int k = -1;
for(int i = 1; i < n; i++)
if(a[i] < 0)
{
k = i;
break;
}
if(k < 1)
cout << "Нет отрицательных элементов\n";
else
{
s = 0;
for(int i = 1; i < k; i++)
s += a[i];
cout << "Сумма между первым и первым отрицательным элементом равна "
<< s << endl;
}
// - 3 -
k = 0;
for(int i = 0; i < n; i++)
if(abs(a[i]) <= 1)
k++;
if(k > 0)
{
k = n - k;
double *b = new double[k];
for(int i = 0, j = 0; i < n; i++)
if(abs(a[i]) > 1)
{
b[j] = a[i];
j ++;
}
for(int i = 0; i < k; i++)
cout << b[i] << " ";
cout << endl;
delete [] b;
}
else
cout << "Нечего удалять\n";
delete [] a;
return 0;
}