powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Массивы, помогите найти ошибки) Если таковы есть)
16 сообщений из 16, страница 1 из 1
Массивы, помогите найти ошибки) Если таковы есть)
    #38515120
bridgetony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
47.
48.
49.
Dim A(100)
Dim B(100)

Private Sub Command1_Click()
n = Val(Text1.Text)
For i = 1 To n
    A(i) = Val(InputBox("a(i)"))
    Picture1.Print "a"; i; "="; A(i)
    Next
    End Sub
    
Private Sub Command2_Click()
n = Val(Text1.Text)
For i = 1 To n
    A(i) = Int(1001 * Rnd + 1)
    B(j) = Int(1001 * Rnd + 1)
    Picture1.Print "a"; i; "="; A(i)
    Next
End Sub

Private Sub Command3_Click()
Amax = -10000000000#
Amin = 10000000000#
For i = 1 To n
If A(i) > Amax Then
Amax = A(i)
imax = i
End If
If A(i) < Amin Then
Amin = A(i)
imin = i
End If
Next
For i = 1 To n
j = i
If i = imax Then
B(j) = A(imin)
Else
If i = imin Then
B(j) = A(imax)
Else
B(j) = A(i)
End If
End If
Next
For i = 1 To n
Picture2.Print "b"; i; "="; B(i)
Next
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515125
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно вызывает проблему?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515133
bridgetony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Подскажите пожалуйста, код и форма программы совпадает с заданием?
Задание:
В массиве "В" по сравнению с массивом "А", максимальное и минимальное значение поменять местами.
Код(переработанный):

Dim A(100)
Dim B(100)

Private Sub Command1_Click()
n = Val(Text1.Text)
For i = 1 To n
Next
End Sub


Private Sub Command2_Click()
n = Val(Text1.Text)
For i = 1 To n
A(i) = Int(1001 * Rnd + 1)
B(j) = Int(1001 * Rnd + 1)
Picture1.Print "a"; i; "="; A(i)
Next
End Sub

Private Sub Command3_Click()
Amax = -10000000000#
Amin = 10000000000#
For i = 1 To n
If A(i) > Amax Then
Amax = A(i)
imax = i
End If
If A(i) < Amin Then
Amin = A(i)
imin = i
End If
Next
For i = 1 To n
j = i
If i = imax Then
B(j) = A(imin)
Else
If i = imin Then
B(j) = A(imax)
Else
B(j) = A(i)
End If
End If
Next
For i = 1 To n
Picture2.Print "b"; i; "="; B(i)
Next
End Sub


Форму прикрепил.
Надеюсь на вашу помощь.
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515135
bridgetony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

И, как сделать, чтобы от кнопки "Ввод" на picturebox1 выводило кол-во элементов, которое я задал.
А то, я в textbox ввожу, например - три. Программа, это "три" записывает вместо label, и все) picturebox вообще с кнопкой "ввод" ни как не задействован..
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515150
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно, зачем для перемены мест в массиве В нужен массив А. Для чего их нужно сравнивать? Просто так поменять нельзя?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515151
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И зачем рулетка? Чтобы внести элемент игры и задора?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515153
bridgetony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn,

Ответа на свой вопрос, я так и не увидел.
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515154
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetony,

Перескажи пожалуйста своими словами содержание этой главы. С примером: если в текст бокс введено значение "bridgetony", а n нигде не декларирован.

Код: vbnet
1.
2.
3.
4.
5.
Private Sub Command1_Click()
n = Val(Text1.Text)
For i = 1 To n
Next
End Sub
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515158
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetonyVladConn,

Ответа на свой вопрос, я так и не увидел.

Его трудно увидеть, потому что неясна постановка задачи. Для чего нужно округлять, для чего нужен еще один массив, для чего сравнивать его, я не вижу его место в процессе перестановки элементов в другом массиве. Для чего в конце концов нужен пустой цикл?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515159
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetony,

Этот кусок кода с колоссальной скоростью, на которую только способен Пентиум 4, напечает одно поверх другого n значений, а ты увидишь только последнее.

Код: vbnet
1.
2.
3.
For i = 1 To n
Picture2.Print "b"; i; "="; B(i)
Next
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515164
bridgetony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn,

Dim A(100)
Dim B(100)

Private Sub Command1_Click()
n = Val(Text1.Text)
For i = 1 To n
A(i) = Int(1001 * Rnd + 1)
B(j) = Int(1001 * Rnd + 1)
Picture1.Print "a"; i; "="; A(i)
Next
End Sub

Private Sub Command2_Click()
Amax = -10000000000#
Amin = 10000000000#
For i = 1 To n
If A(i) > Amax Then
Amax = A(i)
imax = i
End If
If A(i) < Amin Then
Amin = A(i)
imin = i
End If
Next
For i = 1 To n
j = i
If i = imax Then
B(j) = A(imin)
Else
If i = imin Then
B(j) = A(imax)
Else
B(j) = A(i)
End If
End If
Next
For i = 1 To n
Picture2.Print "b"; i; "="; B(i)
Next
End Sub

Если что не так, переработай, покажи, как правильно. Я не понимаю.
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515184
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bridgetony,

студент, тебе ж показали как код оформлять ... ты и с этим не можешь справиться ?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515210
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetony,

Извини, друг, я понимаю, ты в отчаянии, но я действительно не врубаюсь в постановку задачи. Что означает фраза "В массиве "В" по сравнению с массивом "А"..."? Что у тебя является мерой сравнения массивов А и В?
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515240
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetony,

У меня VB6 нет, поэтому сделал в VBA Excel.

1. Сначала в проекте сделай ссылку на Microsoft Scripting Runtime (в меню - Tools/References)

2. На странице Excel поставь кнопку. В ее событие клик вставь код:

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

3. В кодовом окне вставь форму. Проследи, чтобы ее имя было UserForm1

4. На форму посади маленький техт бокс TextBox1 для ввода размерности массива (подразумевается integer)

5. Ниже посади два высоких, чтобы поместилось строк 40, техт бокса TextBox2 (для массива А) и TextBox3 (для массива В)

6. Еще ниже посади комманд баттон CommandButton1

7. В кодовое окно формы скопируй код:

Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
Option Explicit

Private intN As Integer
Private intA() As Integer
Private intB() As Integer
Private objDic As New Scripting.Dictionary

Private Sub CommandButton1_Click()
    
    intN = GetArrayDim

    If intN < 2 Then
        Exit Sub
    Else
        StartProcess
        ShowResults
    End If
End Sub

Private Function GetArrayDim() As Integer
    Dim intRet As Integer
    
    If IsNumeric(TextBox1.Text) Then
        intRet = Abs(CInt(TextBox1.Text))
    Else
        intRet = 0
    End If

    GetArrayDim = intRet
End Function

Private Sub StartProcess()
    ReDim intA(intN)
    ReDim intB(intN)
    Dim intI As Integer
    Dim intMinA As Integer
    Dim intMaxA As Integer
    Dim intMinI As Integer
    Dim intMaxI As Integer
    Dim intRand As Integer
    
    Randomize
    objDic.RemoveAll
    
    For intI = 0 To intN - 1
        
        While objDic.Exists(intRand)
            intRand = Int((intN * Rnd) + 1)
        Wend
        objDic.Add intRand, intI
        intA(intI) = intRand
        intB(intI) = intA(intI)
    Next intI
        
    intMinA = intA(0)
    intMaxA = intA(0)
    intMinI = 0
    intMaxI = 0
    
    For intI = 1 To intN - 1
        If intA(intI) < intMinA Then
            intMinA = intA(intI)
            intMinI = intI
        ElseIf intA(intI) > intMaxA Then
            intMaxA = intA(intI)
            intMaxI = intI
        End If
    Next intI
        
     intB(intMinI) = intMaxA
     intB(intMaxI) = intMinA
End Sub

Private Sub ShowResults()
    Dim intI As Integer
    Dim strTextA As String
    Dim strTextB As String
    
    TextBox2.Text = ""
    TextBox3.Text = ""
    
    TextBox1.MultiLine = True
    TextBox2.MultiLine = True
    
    For intI = 0 To intN - 1
         strTextA = strTextA & intI & "," & intA(intI) & vbCrLf
         strTextB = strTextB & intI & "," & intB(intI) & vbCrLf
    Next intI
    
    TextBox2.Text = strTextA
    TextBox3.Text = strTextB
    
End Sub



Good Luck.
...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515242
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bridgetony,

Улучшил несколько процедуру StartProcess.

Код: 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.
Private Sub StartProcess()
    ReDim intA(intN)
    ReDim intB(intN)
    Dim intI As Integer
    Dim intMinA As Integer
    Dim intMaxA As Integer
    Dim intMinI As Integer
    Dim intMaxI As Integer
    Dim intRand As Integer
    
    Randomize
    objDic.RemoveAll
    
    intRand = Int(((intN + 1) * Rnd) + 1)
    objDic.Add intRand, -1

    For intI = 0 To intN - 1
        
        While objDic.Exists(intRand)
            DoEvents
            intRand = Int(((intN + 1) * Rnd) + 1)
        Wend
        objDic.Add intRand, intI
        intA(intI) = intRand
        intB(intI) = intA(intI)
    Next intI
        
    intMinA = intA(0)
    intMaxA = intA(0)
    intMinI = 0
    intMaxI = 0
    
    For intI = 1 To intN - 1
        If intA(intI) < intMinA Then
            intMinA = intA(intI)
            intMinI = intI
        ElseIf intA(intI) > intMaxA Then
            intMaxA = intA(intI)
            intMaxI = intI
        End If
    Next intI
        
     intB(intMinI) = intMaxA
     intB(intMaxI) = intMinA
End Sub

...
Рейтинг: 0 / 0
Массивы, помогите найти ошибки) Если таковы есть)
    #38515671
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как просил.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Массивы, помогите найти ошибки) Если таковы есть)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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