Консультация № 201083
04.06.2021, 19:47
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:
Открыть файл на запись. Записать в него 150 различных чисел. Закрыть файл. Открыть файл на чтение и, прочитав записанные данные, получить новый массив, содержащий введённые числа в следующем порядке:
1-ое число поменять со 150-м, 2-ое со 149-м и т.д.
1-ое число получившегося массива поменять с 75-м, 2-ое с 74-м и т.д., то же самое проделать и со второй половиной. (На языке VBA)
Огромное спасибо!

Обсуждение

давно
Модератор
137394
1850
05.06.2021, 11:09
общий
05.06.2021, 11:15
это ответ
Код:
Sub WriteRead()

Const File1 = "Z:\Box_Out\Файл с исходными числами.txt"
Const File2 = "Z:\Box_Out\Файл с переставленными числами.txt"
Const N = 150
Const i11 = 1, i12 = 150
Const i21 = 1, i22 = 75
Const i31 = 76, i32 = 150


With CreateObject("Scripting.FileSystemObject")
With .CreateTextFile(File1, True) ' Записываем в файл исходные числа
Randomize
For i = 1 To N
.WriteLine CStr(i)
'.WriteLine CStr(Int((1000 - 100 + 1) * Rnd + 100))
Next
.Close
End With

With .OpenTextFile(File1, 1, False) ' Читаем из файла исходные числа
Sall = .ReadAll
.Close
End With

If Right(Sall, 2) = vbCrLf Then
Sall = Mid(Trim(Sall), 1, Len(Sall) - 2)
End If

Mass = Split(Sall, vbCrLf)
i1 = LBound(Mass)
i2 = UBound(Mass)

Call MyMove(Mass, i1, i11, i12)
Call MyMove(Mass, i1, i21, i22)
Call MyMove(Mass, i1, i31, i32)

With .CreateTextFile(File2, True) ' Записываем в файл преобразованный массив чисел
For i = i1 To i2
.WriteLine Mass(i)
Next
.Close
End With
End With

End Sub

Sub MyMove(Mass, i1, j1, j2)
jj = CInt((j2 - j1) / 2) + 1
If jj > 1 Then
For j = 1 To jj
m = Mass(j1 + j - 2 + i1)
Mass(j1 + j - 2 + i1) = Mass(j2 - j + i1)
Mass(j2 - j + i1) = m
Next
End If
End Sub
5
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа