Phibio Optic » 25.09.2005 (Вс) 20:54
Лана отбой. Тогда хотя бы вот это подправьте, если не трудно?
Спасибо..
Conts VectorSize = 20 'Длина исходного вектора
Dim A(VectorSize) 'Исходный массив (предполагается уже заполненным значениями)
Dim B(VectorSize) 'Массив для сортировки
Dim I, J 'Счетчики циклов
Dim MinInd, MaxInd 'Индекс минимального и максимального отрицательных значений
Dim S 'Сумма отрицательных значений между --"--
'Инициализируем массив индексов перед сортировкой
For I = 1 To VecorSize
B(I) = I
Next I
'Пузырьковая сортировка по убыванию индексов (не значений!)
For I = 1 To VectorSize - 1
For J = VectorSize To I + 1
If A(B(J)) > A(B(I)) Then
Swap(B(I), B(J)) 'По моему процедура Swap была в ранних Бейсиках
End If
Next J
Next I
'Выводим вектор в порядке убывания, заодно найдем индексы первого максимального отрицательного значения, так как минимальное значение очевидно последнее из-за сортировки
MaxInd = 0
For I = 1 To VectorSize
Print A(B(I)); " ";
If (MaxInd <> 0) And (A(B(I)) < 0) Then 'А вот и первый отрицательный максимум
MaxInd = B(I)
End If
Next I
'На всякий случай проверим, а есть ли отрицательные числа в векторе?
If A(B(VectorSize)) < 0 Then
MinInd = B(VectorSize)
Else
MinInd = 0
End If
'Считаем сумму
S = 0
If Abs(MaxInd - MinInd) > 1 Then 'Есть числа между максимумом и минимумом
If MinInd < MaxInd Then
For I = MinInd + 1 To MaxInd - 1
S = S + A(I)
Next I
Else
For I = MaxInd + 1 To MinInd - 1
S = S + A(I)
Next I
End If
Print "Меджу первым отрицательным максимумом и последним минимумом "; Abs(MaxInd - MinInd) - 1; " чисел, их сумма равна "; S
Else
Print "Нет отрицательных чисел среди значений исходного вектора!"
End If
End