Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

End Type



После открытия файла произвольного доступа и записи в него всех длинных записей заполняется индекс пока еще не отсортированными короткими записями:

ReDim Index(n) As ТипИндекса

For i=1 To n

Get #1, i, Студент

Index(i).ФамилияИмя= Ucase (Trim (Студент.Фамилия)+_ Trim (Студент.Имя))

Index(i).НомерЗаписи=i

Next i

Непосредственно сортировка индекса:

Do

f=False

For i=1 To n-1

If Index(i).ФамилияИмя>Index(i+1).ФамилияИмя Then

Index(0)=Index(i):Index(i)=Index(i+1):I

ndex(i+1)=Index(0)
f=True

End If

Next i

Loop While f=True

После чего чтение из файла можно осуществлять оператором:

Get #1, Index(i).НомерЗаписи, Студент

Текст всей программы:

Private Type ДанныеСтудент

Фамилия As String * 15

Имя As String * 10

Группа As String * 4

ОцМатем As Integer

ОцИнфор As Integer

ОцФилос As Integer

End Type

Private Type ТипИндекса

ФамилияИмя As String * 25

НомерЗаписи As Integer

End Type

Dim Index() As ТипИндекса

Private Sub Command1_Click()

Dim Студент As ДанныеСтудент, i As Integer

Open "danst" For Random As #1 Len = Len(Студент)

For i = 1 To 5

Студент.Фамилия = InputBox("Фамилия")

Студент.Имя = InputBox("Имя")

Студент.Группа = InputBox("Группа")

Студент.ОцМатем = Val(InputBox("Оценка по математике"))

Студент.ОцИнфор = Val(InputBox("Оценка по информатике"))

Студент.ОцФилос = Val(InputBox("Оценка по философии"))

Put #1, i, Студент

Next

Close 1

End Sub

Private Sub Command2_Click()

Dim Студент As ДанныеСтудент, i As Integer

ReDim Index(5) As ТипИндекса

Dim f As Boolean

Open "danst" For Random As #1 Len = Len(Студент)

For i = 1 To LOF(1)/ Len(Студент)

Get #1, i, Студент

Index(i).ФамилияИмя = UCase(Trim(Студент.Фамилия) + _

Trim(Студент.Имя))

Index(i).НомерЗаписи = i

Next i

Do

f = False

For i = 1 To 4

If Index(i).ФамилияИмя > Index(i + 1).ФамилияИмя Then

Index(0) = Index(i): Index(i) = Index(i + 1)
Index(i + 1) = Index(0): f = True

End If

Next i

Loop While f = True

Print

For i = 1 To 5

Get #1, Index(i).НомерЗаписи, Студент

Print " " & Trim(Студент.Фамилия) & " " & _ Trim(Студент.Имя) _& " " & Trim(Студент.Группа)

Next i

Close #1

End Sub





Дата публикования: 2014-11-02; Прочитано: 266 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...