Лекция: End Type

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

ReDimIndex(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

 

 

еще рефераты
Еще работы по информатике