Статистика
Всего в нашей базе более 4 327 663 вопросов и 6 445 978 ответов!

Прошу вас помогите!Нужно написать программу,но только обязательно в Visual Basic!!!!!

10-11 класс

На вход программе подаются сведения о
телефонах всех сотрудников некоторого учреждения. В первой строке
сообщается количество сотрудников N, каждая из следующих N строк имеет
следующий формат:

<Фамилия> <Инициалы> <телефон>

где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> - строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), <телефон> – семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «–». <Фамилия> и <Инициалы>, а также <Инициалы <телефон> разделены одним пробелом. Пример входной строки:

Иванов П.С. 555-66-77

Сотрудники
одного подразделения имеют один и тот же номер телефона. Номера
телефонов в учреждении отличаются только двумя последними цифрами.
Требуется написать как можно более эффективную программу, которая будет
выводить на экран информацию, сколько в среднем сотрудников работает в
одном подразделении данного учреждения.


Olenka78 13 янв. 2014 г., 8:41:17 (10 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
Kachev
13 янв. 2014 г., 10:52:25 (10 лет назад)

В присоединенном файле работающая программа. Не забудьте установить уровень безопасности макросов Excel в "средний". сам макрос - на листе рабочей книги, вот его текст:
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) <> 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 "Среднее количество сотрудников в отделе равно" & 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 < nAll) And Not lSorted
        lSorted = True
        nI = nI + 1
        For nJ = 1 To nAll - nI
            If Arr(nJ) > 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


+ 0 -
Anetlitvinenko
13 янв. 2014 г., 12:58:39 (10 лет назад)

Чтобы получить ответ надо число сотрудников (вводится в самом начале) разделить на число отделов. Число отделов определяется различным числом последних цифр телефона: от 00 до 99. Номер отдела связываем с индексом массива А, в который будем ставить 1 если отдел с таким номером есть. Поскольку в задаче не ставится вопрос о проверке входных данных и сохранении их значения, то составляем такой код:
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) > 0 Then k = k + 1
Next i
MsgBox (n / k)
End Sub

+ 0 -
AlenkaKravec
13 янв. 2014 г., 14:46:21 (10 лет назад)

Комментарий удален

+ 0 -
олькан
13 янв. 2014 г., 16:54:04 (10 лет назад)

можно и для Excel!Только напишите,умоляю

+ 0 -
Pasha56
13 янв. 2014 г., 18:53:40 (10 лет назад)

Комментарий удален

+ 0 -
Tolganaika
13 янв. 2014 г., 21:05:32 (10 лет назад)

хорошо,жду)

Ответить

Другие вопросы из категории

Помогите составить табличку:

Предметная область: песни
надо заполнить 5 песен по
1) название
2) альбом
3) исполнитель
4) жанр
5) страна
6) год создания
заранее большое спасибо))

Помогите

Даны 2 массива, определить в каком массиве больше четных чисел.

Читайте также

Помогите написать программу по Информатике! Найти произведение двузначных нечетных чисел, кратных

13.

Нужно написать программу на цикле с предусловием, на Паскале.

написать программу на Assembler

добрый вечер, всем. помогите, пожалуйста, написать программу на Ассемблере.

задание:
Создать программу на языке Ассемблер, что позволяет организовать вычисления над элементами массивов

Объединить два массива 8-битных целых чисел со знаком. Сначала элементы второго затем первого.

заранее огромное спасибо всем!

Написать программу, которая вводит с клавиатуры одномерный массив из n целых чисел, после чего выводит нулевые элементы с их индексами (их можно и не

оказаться)

нужно написать программу на c++
Используя обращения 1) по индексу и 2) по указателю.

Задание Определить, изделия какой из двух групп товаров выгоднее сшить из одного рулона ткани, если известны: расход ткани на каждое изделие и цена

готового изделия, количество метров в рулоне. Помогите, нужно написать программу решения этой задачи в Паскале

1) Написать программу для вычисления суммы цифр пятизначного числа , введенного с клавиатура

2) Заданы действительные числа a , b , c и d . Написать программу нахождения полусуммы наименьшего и наибольшего из них.
3) Написать программу для вычисления суммы цифр числа , введенного с клавиатуры

Помогите прошу



Вы находитесь на странице вопроса "Прошу вас помогите!Нужно написать программу,но только обязательно в Visual Basic!!!!!", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.