• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Одномерные массивы

  • Автор темы Irichka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

Irichka

Само задание обширное, но затруднение вызвала вот эта часть:
Дана последовательность из 20-ти элементов. Нужно получить в отдельном массиве все элементы, входящие в последовательность:
а) по одному разу
б) более чем по одному разу
в) более чем по два раза

Попыталась реализовать пункт А. До половины массива программа работает нормально, а после заносит элементы в Massiv1, которых в нём быть не должно. Помогите, пожалуйста, исправить ошибку.

Код:
Public N As Byte
Dim i As Byte
Dim Massiv() As Single
Dim Massiv1() As Single, Massiv2() As Single, Massiv3() As Single
Dim Fname As String

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
Fname = File1.Path + "\" + File1.FileName
End Sub

Private Sub Form_Load()
Dir1.Visible = False
Drive1.Visible = False
File1.Visible = False
Command1.Visible = False
End Sub
Private Sub Menu_Click(Index As Integer)
Dim Kol As Byte, j As Byte
Select Case (Index)
'		Case 3
'	  Load Form2
'	  Form2.Show
Case 4
If MsgBox("Вы уверены?", vbYesNo + vbQuestion, "Выход") = vbYes Then
Unload Form1
End If
End Select
End Sub

Private Sub Command1_Click()
Dim Str As String, k As Byte
Picture1.Cls
ReDim Massiv(0)
Open Fname For Input As #1 Len = Len(Massiv(0))
N = 0
k = 0
Do While Not EOF(1)
Line Input #1, Str
Massiv(UBound(Massiv)) = Val(Str)
ReDim Preserve Massiv(UBound(Massiv) + 1)
Picture1.Print (Massiv(N)); Tab
N = N + 1
Loop
Close #1
Podmenu2(0).Enabled = True
Podmenu2(1).Enabled = True
Podmenu2(2).Enabled = True
Dir1.Visible = False
Drive1.Visible = False
File1.Visible = False
Command1.Visible = False
End Sub

Private Sub Podmenu1_Click(Index As Integer)
Label3.Caption = ""
Picture1.Cls
Select Case (Index)
Case 0
Dir1.Visible = True
Drive1.Visible = True
File1.Visible = True
Command1.Visible = True
Dir1.SetFocus

End Select
End Sub

Private Sub Podmenu3_Click(Index As Integer)
Select Case (Index)
Case 0
Open "D:\Program files\Microsoft Visual Studio\VB98\Lab5\lab5.txt" For Output As #1
For i = 0 To N - 1
Print #1, , Massiv(i),
Next i
Close #1
Case 1
On Error GoTo met
CommonDialog1.Filter = "текстовый файл(*.txt)|*.txt"
CommonDialog1.ShowSave
Open CommonDialog1.FileName For Output As #1
For i = 0 To N - 1
Print #1, , Massiv(i),
Next i
Close #1
End Select
End Sub


Private Sub Podmenu2_Click(Index As Integer)
ReDim Massiv1(N), Massiv2(N), Massiv3(N)
For i = 0 To N - 1
Massiv1(i) = Massiv(i)
Massiv2(i) = Massiv(i)
Massiv3(i) = Massiv(i)
Next i

Select Case (Index)
Case 0
Label3.Caption = "Элементы, встречающиеся один раз"	
i = N - 1
Kol = N
Do While i <> 0
For k = i + 1 To N - 1
If Massiv1(i) = Massiv1(k) Then

For j = i To Kol - 2
Massiv1(j) = Massiv1(j + 1)
Next j

Kol = Kol - 1
End If
Next k
i = i - 1
Loop
Picture1.Cls
For i = 0 To Kol - 1
Picture1.Print Massiv(i), , , Massiv1(i)
Next i
For i = Kol To N - 1
Picture1.Print Massiv(i)
Next i
N = Kol

Case 1
Label3.Caption = "Элементы, встречающиеся более чем по одному разу"
' ............	 
Case 2
Label3.Caption = "Элементы, встречающиеся более чем по два раза"
' ............
End Select
Podmenu2(0).Enabled = True
Podmenu2(1).Enabled = True
End Sub
 

Вложения

  • VBlab5.rar
    12,6 КБ · Просмотры: 133
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!