Дан массив A(30), заполненный случайным образом в диапозоне [0,4]. Найти: 1) Второй по значению максимальный элемент и его номер. 2)Сдвигать массив вправо до тех пор, пока на первом месте не окажется ноль.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
function Res(a:integer;op:char;b:integer):integer; begin case op of '+':Result:=a+b; '-':Result:=a-b; '*':Result:=a*b; '/':Result:=a div b end end;
begin var s:=ReadlnString('Вводите:'); var p:=s.Matches('(((\-)?\d+)|[\+\-\*\/])').ToArray; if p.Count<>5 then Writeln('Ошибка!') else begin var op1:=p[1].Value[1]; var op2:=p[3].Value[1]; var a:=p[0].Value.ToInteger; var b:=p[2].Value.ToInteger; var c:=p[4].Value.ToInteger; if (op1 in ['+','-']) and (op2 in ['*','/']) then Writeln('='+Res(Res(b,op2,c),op1,a)) else Writeln('='+Res(Res(a,op1,b),op2,c)) end end.
ответ на Python:
a = list(map(int,input().split())) #Принимаем массив из одной строки
s = 0 #Счётчик
for i in range(len(a)-2): #Проход по массиву до пред-предпоследнего элемента
if a[i] == (a[i+1] + a[i+2]) / 2: # Проверяем, является ли этот элемент средним арифметическим 2-х следующих
s += 1 #Прибавляем счётчик
print(s) #Выводим ответ
Или вот:
a = list(map(int,input().split()))
s = 0
for i in range(len(a)-2):
a1 = a[i+1]
a2 = a[i+2]
if a[i] == (a1 + a2) / 2:
s += 1
print(s)
Объяснение: