Прошу вас помогите!Необходимо написать программку,но только обязательно в Visual Basic!!!!!На вход
Прошу вас помогите!Нужно написать программку,но только обязательно в Visual Basic!!!!!
На вход программе подаются сведения о
телефонах всех сотрудников некого учреждения. В первой строке
сообщается количество сотрудников N, любая из последующих N строк имеет
последующий формат:
lt;Фамилияgt; lt;Инициалыgt; lt;телефонgt;
где lt;Фамилияgt; строчка, состоящая не более чем из 20 знаков, lt;Инициалыgt; - строчка, состоящая не более чем из 4-х знаков (буковка, точка, буковка, точка), lt;телефонgt; семизначный номер, 3-я и 4, я, а также 5-я и 6-я числа которого разбиты эмблемой . lt;Фамилияgt; и lt;Инициалыgt;, а также lt;Инициалы lt;телефонgt; разбиты одним пробелом. Пример входной строки:
Иванов П.С. 555-66-77
Сотрудники
1-го подразделения имеют один и тот же номер телефона. Номера
телефонов в учреждении отличаются только 2-мя последними цифрами.
Нужно написать как можно более эффективную программку, которая будет
выводить на экран информацию, сколько в среднем сотрудников работает в
одном подразделении данного учреждения.
Option Explicit
Sub CommandButton1_Click()
Dim n As Integer, i As Integer, j As Integer
Dim Sr As Single
Dim Phone As String
'Динамические массивы - неизвестно кол-во подразделений
Dim nPhone() As String, nDep() As Integer
i = 2
Do While Len(Cells(i, 1).Value) lt;gt; 0
i = i + 1
Loop
n = i - 2 'Количество служащих определено по первой пустой ячейке в 1й колонке
ReDim nPhone(1 To n), nDep(1 To n) 'Определили массивы нужной размерности
For i = 1 To n
nPhone(i) = Cells(i + 1, 2).Value
nDep(i) = 0
Next i
BubbleSort nPhone
Phone = "***-**-**" ' Можно брать что угодно, не считая реального номера
j = 0
For i = 1 To n
If nPhone(i) = Phone Then
nDep(j) = nDep(j) + 1
Else
Phone = nPhone(i)
j = j + 1
nDep(j) = 1
End If
Next i
Sr = 0
For i = 1 To j
Sr = Sr + nDep(i)
Next i
Sr = Sr / j
MsgBox "Среднее количество служащих в отделе равно" amp; Str(Sr), vbInformation
End Sub
Public Sub BubbleSort(Arr As Variant)
' Пузырьковая сортировка одномерного массива
Dim lSorted As Boolean, nI As Long, nJ As Long, nAll As Long, vTemp As Variant
nAll = UBound(Arr)
nI = LBound(Arr) - 1
Do While (nI lt; nAll) And Not lSorted
lSorted = True
nI = nI + 1
For nJ = 1 To nAll - nI
If Arr(nJ) gt; Arr(nJ + 1) Then
vTemp = Arr(nJ): Arr(nJ) = Arr(nJ + 1): Arr(nJ + 1) = vTemp: lSorted = False
End If
Next nJ
Loop
End Sub
Sub z()
Dim a(99) As Integer
n = InputBox("Введите N")
For i = 1 To n
s = InputBox("Введите данные сотрудника")
k = Val(Right(s, 2))
a(k) = 1
Next i
k = 0 'считаем число отделов
For i = 1 To 100
If a(i) gt; 0 Then k = k + 1
Next i
MsgBox (n / k)
End Sub
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.