Переставить элементы массива в порядке убывания и найти сумму элементов массива...

0 голосов
33 просмотров

Переставить элементы массива в порядке убывания и найти сумму элементов массива находящихся между наибольшим и наименьшим элементом массива не включая их самих pascal


Информатика (22 баллов) | 33 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1880 от 18.11.2018

Внимание! Если программа не работает, обновите версию!

begin

 var a := ArrRandom(ReadInteger('n='), -10, 10);

 a.Println;

 a := a.OrderDescending.ToArray;

 a.Println;

 var (max, min) := (a.Max, a.Min);

 var i1 := a.IndexesOf(t -> t = max).Last;

 var i2 := a.IndexOf(min);

 a?[i1 + 1:i2].Sum.Println

end.

Пример

n= 15

-10 9 9 -10 -5 -7 -9 1 -8 -10 1 7 10 4 -5

10 9 9 7 4 1 1 -5 -5 -7 -8 -9 -10 -10 -10

-3

(654k баллов)
0 голосов

У, сначала нужно найти макс и мин элементы. 
Max = A(1) 
nMax = 1 
Min = A(1) 
nMin = 1 
For i = 2 to N 
if A(i) > Max Then 
Max = A(i) 
nMax = i 
End If 
if A(i) < Min Then 
Min = A(i) 
nMin = i 
End If 
Next i 
Таким образом мы узнали макс и мин элементы, а главное, их номера nMax и nMin. 
Проверим, какой номер больше, и сделаем так, чтобы было nMin < nMax. 
Если nMin > nMax, поменяем их местами 
If nMin > nMax Then 
Q = nMin 
nMin = nMax 
nMax = Q 
End If 
Теперь нужно отсортировать элементы между ними пузырьковой сортировкой по убыванию 
For i = nMin + 1 To nMax - 1 
Здесь вставляется алгоритм пузырьковой сортировки, который я не помню. Поищи в Интернете. 
Next i

(128 баллов)
0

В общем, это какая-то ерунда. Сказано, что сначала элементы надо отсортировать, а потом с ними что-то делать.

0

И не забудьте учесть, что максимальный и/или минимальный элемент может быть не единственным.