1

Тема: Перетворити масив

Як так зробити?
Перетворити масив таким чином, щоб спочатку розміщувались всі елементи, ціла частина яких знаходиться в інтервалі [a,b], після чого – всі решта.

2 Востаннє редагувалося P.Y. (14.04.2020 16:09:21)

Re: Перетворити масив

Фактично, це задача на сортування масиву, тільки критерій впорядкування елементів булевий — входить чи ні елемент у заданий діапазон. Алгоритм сортування може бути будь-яким (бульбашковим, прямої вибірки і т.п.), але з заміною порівняння елементів на порівняння умови входження в діапазон.
Тобто, замість m[ i ] > m[ j ]
треба зробити (a<=m[ i ] && m[ i ]<=b) > (a<=m[ j ] && m[ j ]<=b),
де m — масив, i та j — індекси порівнюваних елементів.

Подякували: koala, leofun01, 221VOLT3

3

Re: Перетворити масив

P.Y. написав:

Фактично, це задача на сортування масиву, тільки критерій впорядкування елементів булевий — входить чи ні елемент у заданий діапазон. Алгоритм сортування може бути будь-яким (бульбашковим, прямої вибірки і т.п.), але з заміною порівняння елементів на порівняння умови входження в діапазон.
Тобто, замість m[ i ] > m[ j ]
треба зробити (a<=m[ i ] && m[ i ]<=b) > (a<=m[ j ] && m[ j ]<=b),
де m — масив, i та j — індекси порівнюваних елементів.

У мене виходить так, що завдання звучить наступним чином:
В одномірному масиві, який складається з N дійсних елементів, обчислити:
1) номер максимального за модулем елемента масиву;
2) суму елементів масиву, що розташовані після першого додатного елементу.
Перетворити масив таким чином, щоб спочатку розміщувались всі елементи, ціла частина яких знаходиться в інтервалі [a,b], після чого – всі решта.
На екран вивести: вихідний масив; обчислені значення та перетворений масив.


Перші два завдання я зробила і мій код виглядає так:
а як перетворити тепер масив я не знаю( інтервал потрібно вказувати самостійно на формі)

Dim A(1 To 10) As Integer
Dim B(1 To 10) As Integer
Dim i As Integer, k As Integer, max As Integer, n As Integer, P As Variant
Dim S As String

Private Sub Command1_Click()
Command1.Caption = "Розрахунок"
Label1.Caption = "Програма знаходження номеру max за модулем елемента масиву та суму елементів масиву, що розташовані після першого додатного елементу."
Label2.Caption = "Номер максимального за модулем елемента масиву :"
Label3.Caption = "Сума елементів масиву, що розташовані після першого додатного елементу :"
n1 = InputBox("Введіть кількість елементів <=10:")
n = Val(n1)

For i = 1 To n
    A(i) = InputBox("Введіть число:", "Масив")
Next i
max = Abs(A(1)): kmax = 1
For i = 2 To n
If Abs(A(i)) > max Then max = Abs(A(i)): kmax = i Else
Next i
Label4.Caption = "max = " & Str(max) & "   №  - " & Str(kmax)
k = 0
For i = 1 To n
If A(i) > 0 Then k = k + A(i)


Next i
Label5.Caption = "Сума:  " & k
S = ""
For i = 1 To n
  S = S + Str(A(i)) & ", "
Next i
Label6.Caption = "Вихідний масив:  " & S