powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массивам.
4 сообщений из 4, страница 1 из 1
Вопрос по массивам.
    #38248238
FRANQ1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Матрица A(n, n) размещена в одномерном массиве по строкам. Поменять местами k-ю и m-ю строки (k и m задаются пользователем). Результат напечатать по строкам.

Как поменять строчки в одномерном массиве, и потом напечатать как матрицу? Хелп плз :(

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Private Sub cmdCreateB_Click()
Dim i As Byte, j As Byte
On Error GoTo p
Randomize Timer
n = InputBox("Введите количество элементов", "Ввод")
ReDim b(1 To n) As Integer
ReDim a(1 To n, 1 To n) As Integer
Print "Массив B:"
For i = 1 To n
   b(i) = Rnd * 10 - 5
   Print b(i);
   Print vbTab;
Next i
Exit Sub
p:
MsgBox "Ошибка ввода данных!", vbExclamation, "Ошибка"
End Sub

Private Sub cmdResult_Click()
Dim i As Byte, j As Byte
s1 = Txt1.Text
s2 = Txt2.Text
If s1 > n Or s2 > n Or s1 <= 0 Or s2 <= 0 Then
   MsgBox "Данной строки не существует!", vbExclamation, "Ошибка ввода"
Else
For j = 1 To n
 For i = 1 To n
   t = a(s1, j)
   a(s1, j) = a(s2, j)
   a(s2, j) = t
 Next i
Next j

Print: Print "Матрица C:"
For i = 1 To n
 For j = 1 To n
   Print a(i, j);
   Print vbTab;
 Next j
 Print
Next i
Print
End If
Txt1.Text = ""
Txt2.Text = ""
End Sub


...
Рейтинг: 0 / 0
Вопрос по массивам.
    #38248272
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У Вас написано: Матрица A(n, n) размещена в одномерном массиве по строкам
Это значит, что матрица размещена в массиве A(1 to n*n), k-я строка - это элементы от A((k-1)*n+1) до A((k-1)*n+n).
...
Рейтинг: 0 / 0
Вопрос по массивам.
    #38248957
FRANQ1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,

тоесть должно получиться что-то типо этого?

Код: vbnet
1.
2.
3.
4.
5.
For i = 1 To m
 B(i) = A((k - 1) * m + i)
 A((k - 1) * m + i) = A((g - 1) * m + i)
 A((g - 1) * m + i) = B(i)
Next i
...
Рейтинг: 0 / 0
Вопрос по массивам.
    #38249925
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну типа... Массив В не нужен, достаточно одной переменной для временного хранения.
Удобно один раз посчитать сдвиг, чтобы сделать цикл более прозрачным (и быстрым).
Код: vbnet
1.
2.
3.
4.
5.
6.
shift = (m - k) * n 'сдвиг
For i = (k - 1) * n + 1 To (k - 1) * n + n
    tmp = A(i)
    A(i) = A(i + shift)
    A(i + shift) = tmp
Next
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массивам.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]