1 / 1 / 0
Регистрация: 03.12.2011
Сообщений: 47
1

Почему mas(0,0) пустой в приведенном коде

17.04.2012, 22:16. Показов 1003. Ответов 3
Метки нет (Все метки)

Почему mas(0,0) пустой?

Visual Basic
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
Sub CoolSort(ByRef SourceArr() As Variant, ByVal N As Integer)
     ' сортировка двумерного массива по столбцу N
     
    If N > UBound(SourceArr, 2) Or N < LBound(SourceArr, 2) Then _
        MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Sub
        
     Dim Check As Boolean
     Dim i As Integer
     Dim j As Integer
     Dim nCount As Integer
     ReDim tmpArr(UBound(SourceArr, 2)) As Variant
     
     'MsgBox (UBound(SourceArr, 1))
     Do Until Check
         Check = True
         For i = LBound(SourceArr, 1) To UBound(SourceArr, 1) - 1
             If Val(SourceArr(i, N)) > Val(SourceArr(i + 1, N)) Then
                 For j = LBound(SourceArr, 2) To UBound(SourceArr, 2)
                     tmpArr(j) = SourceArr(i, j)
                     SourceArr(i, j) = SourceArr(i + 1, j)
                     SourceArr(i + 1, j) = tmpArr(j)
                     Check = False
                 Next
             End If
         Next
     Loop
End Sub
 
Sub Index()
     Const N As Integer = 3
     Dim mas(3, 3) As Variant
     Dim str As String
     Dim i As Integer
     Dim j As Integer
     
     For i = 0 To N - 1
        For j = 0 To N - 1
            mas(i, j) = InputBox("x[" & i & "][" & j & "]=")
        Next j
    Next i
    
    Call CoolSort(mas(), 1)
 
    MsgBox(mas(0,0))
    MsgBox(mas(3,2))
End Sub
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2012, 22:16
Ответы с готовыми решениями:

Почему решение не рационально в приведенном коде
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Почему в приведенном коде выводится число 6?
Собственно вопрос в теме, почему выводится число 6? sing System; using...

Почему в приведенном коде не увеличивается размерность массива
Помогите найти ошибку. Не понимаю что тут не правильно int x, y; x = 0;...

Почему происходит блокировка потоков в приведенном коде
Здравствуйте. Есть метод run. Создаются и запускаются 2 потока для вызова этого метода. По моему ...

3
729 / 405 / 95
Регистрация: 19.12.2010
Сообщений: 756
17.04.2012, 23:26 2
подправил.
Visual Basic
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
Sub CoolSort(ByRef SourceArr() As Variant, ByVal N As Integer)
     ' сортировка двумерного массива по столбцу N
    If N > UBound(SourceArr, 2) Or N < LBound(SourceArr, 2) Then _
        MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Sub
     Dim Check As Boolean
     Dim i As Integer
     Dim j As Integer
     Dim nCount As Integer
     ReDim tmpArr(UBound(SourceArr, 2)) As Variant
     Do Until Check
         Check = True
         For i = LBound(SourceArr, 1) To UBound(SourceArr, 1) - 2
             If Val(SourceArr(i, N)) > Val(SourceArr(i + 1, N)) Then
                 For j = LBound(SourceArr, 2) To UBound(SourceArr, 2)
                     tmpArr(j) = SourceArr(i, j)
                     SourceArr(i, j) = SourceArr(i + 1, j)
                     SourceArr(i + 1, j) = tmpArr(j)
                     Check = False
                 Next
             End If
         Next
     Loop
End Sub
 
Sub Index1()
     Const N As Integer = 4
     Dim mas(N, N) As Variant
     Dim str As String
     Dim i As Integer
     Dim j As Integer
     For i = 0 To N - 1
        For j = 0 To N - 1
            mas(i, j) = Int(Rnd * 10) + 1
            Cells(i + 1, j + 1) = mas(i, j)
            'InputBox ("x[" & i & "][" & j & "]=")
        Next j
    Next i
    Call CoolSort(mas(), 0)
     For i = 0 To N - 1
        For j = 0 To N - 1
            Cells(i + N + 2, j + 1) = mas(i, j)
        Next j
    Next i
End Sub
0
1 / 1 / 0
Регистрация: 03.12.2011
Сообщений: 47
18.04.2012, 01:06  [ТС] 3
сам mas() ведь таким же и остался...
0
5576 / 1568 / 402
Регистрация: 23.12.2010
Сообщений: 2,358
Записей в блоге: 1
18.04.2012, 09:37 4
Потому, что массив mas() имеет размерность mas(0 to 3, 0 to 3), а заполнение ведется от 0 до 2.
Значения mas(3, 0 ), mas(3, 1), mas(3, 2) , mas(3, 3), mas(0, 3 ), mas(1, 3), mas(2, 3) , mas(3, 3) остаются нулевыми.
После сортировки нулевое значение из строки 3 перемещается в 0-левую строку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 09:37
Помогаю со студенческими работами здесь

Почему не меняется значение переменной в приведенном коде
Здравствуйте, у меня есть код: Object a = 0; Object b = a; a...

Winsock. Почему в приведенном коде не работает создание сокета?
Добрый день! Пробую освоить сетевое программирование под винду. Планируется клиентское приложение,...

Почему в приведенном коде переменные видны для всех классов?
Сегодня объяснял классы сыну. И наткнулся на следующее (и в WDE и в IDE). Почему этот код работает?...

Почему в приведенном коде при безформатном выводе не выходят значения
Private Sub Command1_Click() Picture1.Cls h = Val(Text1.Text) R = Val(Text2.Text) pi = 3.14 If...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru