Отсортировать в процедуре список и напечатать в основной программе - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д