Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массивам. / 4 сообщений из 4, страница 1 из 1
05.05.2013, 18:04
    #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
05.05.2013, 19:46
    #38248272
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по массивам.
У Вас написано: Матрица A(n, n) размещена в одномерном массиве по строкам
Это значит, что матрица размещена в массиве A(1 to n*n), k-я строка - это элементы от A((k-1)*n+1) до A((k-1)*n+n).
...
Рейтинг: 0 / 0
06.05.2013, 14:10
    #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
07.05.2013, 10:28
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массивам. / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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