20 дан числовой масси из 100 элементов. в диапазоне от -20 до +20. в какой половине среднняя температура была выше. какие 2 рядом стоящиx числа наибольшие
begin var a:=ArrRandom(100,-20,20); a.Println; if a[:50].Average>a[50:].Average then Println('Температура выше в первой половине') else Println('Температура выше во второй половине'); var max:=a.Min; for var i:=0 to 98 do if (a[i]>max) and (a[i+1]=a[i]) then max:=a[i]; Println(max,max); end.
Чтобы прекратить ввод чисел в массив нужно ввести число "-1". class ArrayMiddle{ public static void main(String args[]){ java.util.Scanner in = new java.util.Scanner(System.in); long eArray[] = new long[1]; while((eArray[eArray.length-1] = in.nextLong())!=-1){ long nArray[] = new long[eArray.length+1]; for(int nCell = 0; nCell<eArray.length; nCell++)nArray[nCell]=eArray[nCell]; eArray = nArray; } eArray[eArray.length-1] = 0; for(int cCell = 0; cCell<eArray.length-1; cCell++)eArray[eArray.length-1]+=eArray[cCell]; System.out.print(eArray[eArray.length-1]/(double)(eArray.length-1)); } }
И пояснение, как это работает, т.е. по сути алгоритм на русском языке. ArrRandom(30,0,1000) создает массив из 30 элементов и заполняет его случайными значениями из диапазона [0,1000]. Далее этот массив обрабатывается методом Println, который направляет значения элементов на вывод, разделяя их запятой с последующим пробелом и в конце вывода добавляет смену строки. Затем элементы массива проходят фильтр Where(x->Odd(x)), который пропускает через себя только те значения, которые удовлетворяют условию Odd(значение элемента)=True, а мы знаем, что Odd() возвращает True для нечетного аргумента. Далее фильтр элементы обрабатываются методом Average, который умеет принимать набор значений и возвращать их среднее. И наконец, процедура Writeln выводит полученное значение, предваряя его текстовым пояснением.
// Cборка 1590 от 03.12.2017
begin
var a:=ArrRandom(100,-20,20); a.Println;
if a[:50].Average>a[50:].Average
then Println('Температура выше в первой половине')
else Println('Температура выше во второй половине');
var max:=a.Min;
for var i:=0 to 98 do
if (a[i]>max) and (a[i+1]=a[i]) then max:=a[i];
Println(max,max);
end.
Пример:
-17 14 7 16 13 -19 13 -12 -16 -3 6 19 -10 -18 -2 -9 -8 -17 7 14 3 3 -12 -17 0 6 -11 7 9 17 -20 -15 4 -11 -13 19 -12 5 4 16 -18 -1 -5 -18 -9 -9 10 -14 11 10 -18 18 8 19 5 1 6 3 -5 -14 13 -15 0 -12 -4 1 -6 -19 15 -1 -18 8 0 11 12 -16 -13 -15 13 -12 17 -18 17 19 14 -17 -3 6 4 7 -7 5 -11 -2 -17 18 20 -13 6 10
Температура выше во второй половине
3 3