Вставить после каждой четной строки Первую строку - VB
Формулировка задачи:
Доброй ночи! Помогите пожалуйста исправить код. Не могу найти ошибку. Он мне первую строку копирует вообще на все строки, но правильно увеличивает массив. Нужно решить именно без дополнительного массива!
Код записан в модуле.
В Форме записано вот что
Листинг программы
- Public Sub Vstavka(ByRef x(,) As Integer, ByRef n As Integer, ByVal m As Integer)
- Dim k_s, k As Integer
- k_s = n
- k = 0
- For i = 0 To n - 1
- If i Mod 2 = 0 Then
- n = n + 1
- For ii = n - 1 To i + 2 Step -1
- For j = 0 To m - 1
- x(ii, j) = x(ii - 1, j)
- Next j
- Next ii
- For ii = 0 To n - 1
- For j = 0 To m - 1
- x(ii + 1, j) = x(0, j)
- Next j
- Next ii
- k_s = k_s + 1
- End If
- Next i
- End Sub
Листинг программы
- ...
- If RadioButton6.Checked Then Vstavka(a, n, m)
- Vivod(n, m, DataGridView2, a)
- ...
Решение задачи: «Вставить после каждой четной строки Первую строку»
textual
Листинг программы
- Option Base 1
- Private Sub Command1_Click()
- Dim mas() As Integer, i As Integer, j As Integer, m As Integer, n As Integer
- Dim m1 As Integer, k As Integer, m2 As Integer
- m = Val(InputBox("Количество строк (2-10)"))
- n = Val(InputBox("Количество столбцов (2-10)"))
- If m < 2 Or m > 10 Or n < 2 Or n > 10 Then
- MsgBox "Неверные значения!", 0, ""
- Exit Sub
- End If
- m1 = m + Int(m / 2)
- ReDim mas(m1, n)
- Cls
- Print "Исходный массив:"
- For i = 1 To m
- For j = 1 To n
- mas(i, j) = 100 * Rnd()
- Print mas(i, j),
- Next j
- Next i
- Print "Результирующий массив:"
- m2 = m
- For i = m To 2 Step -1
- If i Mod 2 = 0 Then
- m2 = m2 + 1
- If i <> m Then
- For k = m2 To i + 2 Step -1
- For j = 1 To n
- mas(k, j) = mas(k - 1, j)
- Next j
- Next k
- End If
- For j = 1 To n
- mas(i + 1, j) = mas(1, j)
- Next j
- End If
- Next i
- For i = 1 To m1
- For j = 1 To n
- Print mas(i, j),
- Next j
- Next i
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д