Другие языки программирования и технологии

. Дан массив из N чисел. Поменять местами элементы, равноудаленные от произвольно задаваемого К-го элемента.

Вот на VB6:
Private Sub Command1_Click()
Cls
Dim K As Integer
Dim N As Integer
While Val(N) < 1
N = InputBox("Введите N>0:")
Wend
a:
K = InputBox("Введите K<=N:")
If K > N Or K < 1 Then GoTo a
ReDim M(100)
Randomize
'Вводим массив со случайными элементами
Print "Заданный случайно массив: "
For i = 1 To N
M(i) = Int(Rnd(100) * 100)
Print M(i)
Next i
b = N / 2
Select Case K
Case 1 To Int(b)
For i = K + 1 To 2 * K - 1
j = j + 1
C = M(i)
M(i) = M(K - j)
M(K - j) = C
Next i
Case Int(b) + 1 To N
If Int(b) + 1 = b + 1 Then 'середина массива M
For i = K + 1 To N
j = j + 1
C = M(i)
M(i) = M(K - j)
M(K - j) = C
Next i
Else 'средний элемент массива M
For i = 1 To K - 1
C = M(i)
M(i) = M(N - i + 1)
M(N - i + 1) = C
Next i
End If
Case Else
End Select
'Вывод измененного массива M:
Print "Измененный массив: "
For i = 1 To N
Print M(i)
Next i
End Sub
Vadim.melnichenko.69
Vadim.melnichenko.69
31 781
Лучший ответ
vb 6 под рукой не оказалось, поэтому написал в экселе, но должно запуститься и в обычном бейсике

Sub change()
Dim N() As Double
Dim i, k, en As Integer
Dim mass, mass1, mass2 As String
Dim temp As Double

On Error Resume Next
Randomize

en = InputBox("Введите N")
ReDim N(1 To en)
k = InputBox("Введите элемент, относительно которого меняются местами эл-ты")
If k >= en Or k < 1 Then
MsgBox ("Невозможно работать в таких условиях")
Exit Sub
End If

For i = 1 To en
N(i) = CInt(-10 * Rnd + 5)
mass = mass + Str(N(i)) + Chr(13)
'Cells(i + 1, 1) = N(i)
Next i

'MsgBox ("N =" + Chr(13) + mass)

If k <= en / 2 Then

For i = k - 1 To 1 Step -1
temp = N(k - i)
N(k - i) = N(k + i)
N(k + i) = temp

Next i

For i = 1 To en
If i <> k Then mass1 = mass1 + Str(N(i)) + Chr(13) Else mass1 = mass1 + "<" + Str(N(i)) + ">" + Chr(13)
'Cells(i + 1, 3) = N(i)
Next i
MsgBox (" N =" + Chr(13) + mass + Chr(13) + "k= " + Str(k) + " N1 =" + Chr(13) + mass1)
'Cells(k + 1, 3).Font.Bold = True
End If

If k > en / 2 Then
For i = k To en
j = j + 1
temp = N(k + j)
N(k + j) = N(k - j)
N(k - j) = temp
Next i

For i = 1 To en
If i <> k Then mass2 = mass2 + Str(N(i)) + Chr(13) Else mass2 = mass2 + "<" + Str(N(i)) + ">" + Chr(13)
'Cells(i + 1, 5) = N(i)
Next i
MsgBox ("N =" + Chr(13) + mass + Chr(13) + "k= " + Str(k) + " N1 =" + Chr(13) + mass2)
'Cells(k + 1, 5).Font.Bold = True
End If

End Sub

только вот почему-то не хочет выделять К-й элемент.. . сорри )
AL
Azat Lesbaiev
1 677

Похожие вопросы