Отсортировать в процедуре список и напечатать в основной программе - VB

Узнай цену своей работы

Формулировка задачи:

Надо отсортировать в процедуре список работников с высшим образованием и отсортированный список передать основной программе и напечатать в файл Вроде всё логически расписал а выдаёт ошибку

Решение задачи: «Отсортировать в процедуре список и напечатать в основной программе»

textual
Листинг программы
Private Type Сотрудники_Фирмы
ФИО As String
Пол As String
Образ As String
Должн As String
Год As Integer
Возр As Integer
End Type
Dim mas() As Сотрудники_Фирмы, massort() As Сотрудники_Фирмы, maslet() As Сотрудники_Фирмы
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer, n As Integer
n = Val(InputBox("введите количество Сотрудника"))
ReDim mas(1 To n), massort(1 To n), maslet(1 To n)
Open "C:\Сотрудника фирмы.txt" For Output As #1
Debug.Print "<br>Список Сотрудников<br>"
Debug.Print
For i = 1 To n
mas(i).ФИО = InputBox("Введите ФИО " & i & "-го Сотрудника")
mas(i).Пол = InputBox("Введите Пол " & i & "-го Сотрудника")
mas(i).Возр = Val(InputBox("Введите Возраст " & i & "-го Сотрудника"))
mas(i).Образ = (InputBox("Введите Образование " & i & "-го Сотрудника"))
mas(i).Должн = InputBox("Введите Должность " & i & "-го Сотрудника")
mas(i).Год = Val(InputBox("Введите Год приёма на работу " & i & "-го Сотрудника"))
Debug.Print " Фио:"; mas(i).ФИО; " Пол:"; mas(i).Пол; " Возраст:"; mas(i).Возр; " Образование:"; mas(i).Образ; " Должность:"; mas(i).Должн; " Год прин.:"; mas(i).Год
Write #1, i, " Фио:"; mas(i).ФИО; " Пол:"; mas(i).Пол; " Возраст:"; mas(i).Возр; " Образование:"; mas(i).Образ; " Должность:"; mas(i).Должн; " Год прин.:"; mas(i).Год
Next i
Call Obraz(mas, massort, n, i, j)
Debug.Print
Debug.Print "<br>Сотрудники с высшим образованием<br>"
Debug.Print
Write #1, 1, "Список сотрудников с высшим образованием"
For i = 1 To n
Debug.Print " Фио: "; massort(i).ФИО; " Пол: "; massort(i).Пол; " Должность: "; massort(i).Должн;
Write #1, i, " Фио: "; massort(i).ФИО; " Пол: "; massort(i).Пол; " Должность: "; massort(i).Должн;
Debug.Print
Next i
Call Vozrast(mas, n, i, sred)
Write #1, 1, "Средний возраст Сотрудников"
Debug.Print
Debug.Print "<br>Средний возраст Сотрудников<br>"
Debug.Print
Debug.Print "Средний Возраст Сотрудников = " & sred
Write #1, 1, "Средний Возраст Сотрудников = " & sred
Call kollet(mas, maslet, i, n)
Write #1, 1, "Список  сотрудников младше 30 лет"
Debug.Print
Debug.Print "<br>Список  сотрудников младше 30 лет<br>"
Debug.Print
For i = 1 To n - 1
Debug.Print " Фио:"; maslet(i).ФИО; " Пол:"; maslet(i).Пол; " Возраст:"; maslet(i).Возр; " Должность:"; maslet(i).Должн; " Год прин.:"; maslet(i).Год
Write #1, i, " Фио:"; maslet(i).ФИО; " Пол:"; maslet(i).Пол; " Возраст:"; maslet(i).Возр; " Должность:"; maslet(i).Должн; " Год прин.:"; maslet(i).Год
Next i
End Sub
Private Sub Obraz(ByRef mas() As Сотрудники_Фирмы, ByRef massort() As Сотрудники_Фирмы, n, i, j)
Dim Tmp As String
For i = 1 To n + 1 Step 1
For j = 1 To n - i Step 1
If mas(j).ФИО > mas(j + 1).ФИО Then
Tmp = mas(j).ФИО
mas(j).ФИО = mas(j + 1).ФИО
mas(j + 1).ФИО = Tmp
End If
Next j
Next i
For i = 1 To n
If mas(i).Образ = "Высшее" Then
massort(i).ФИО = mas(i).ФИО
massort(i).Пол = mas(i).Пол
massort(i).Должн = mas(i).Должн
End If
Next i
End Sub
Private Sub Vozrast(ByRef mas() As Сотрудники_Фирмы, n, i, sred)
Dim pers, summa As Integer
sred = 0
pers = 0
summa = 0
For i = 1 To n
summa = summa + mas(i).Возр
pers = pers + 1
Next i
sred = summa / pers
End Sub
Private Sub kollet(ByRef mas() As Сотрудники_Фирмы, ByRef maslet() As Сотрудники_Фирмы, n, i)
For i = 1 To n - 1
If mas(i).Возр < 30 Then
maslet(i).ФИО = mas(i).ФИО
maslet(i).Возр = mas(i).Возр
maslet(i).Пол = mas(i).Пол
maslet(i).Должн = mas(i).Должн
maslet(i).Год = mas(i).Год
End If
Next i
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы