Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 17:11   #1
Rustamel
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 13
По умолчанию переменная строкового типа

Помогите решить проблему. В заданном предложении (переменная строкового типа) указать слово , в котором доля гласных ‘a’, ‘е’, ‘и’ максимальна.

Даже незнаю с чего начинать, функция Mid(st, 3, 4) выделяет тока заданные символы, а как выделить слово?Как проверить наличие букв ‘a’, ‘е’, ‘и’ да ещё и сравнить с другими словами чтобы найти то слово в котором количество этих букв максимальна???Спасибо
:?:
Rustamel вне форума Ответить с цитированием
Старый 19.04.2010, 17:20   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

В цикле проверяете каждую букву и суммируете. В массив можно занести данные для разных слов, а потом найти максимум
motorway вне форума Ответить с цитированием
Старый 19.04.2010, 17:24   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub СверхсложнаяПрограмма()
    txt = "Как проверить наличие букв ‘a’, ‘е’, ‘и’ да ещё и сравнить с другими словами чтобы найти то слово в котором количество этих букв максимальна?"
    НужноеСлово = "": МаксимальноеКоличествоГласных = 0
    For Each word In Split(txt, " ")
        КолвоГласных = КоличествоГласных(word)
        If КолвоГласных > МаксимальноеКоличествоГласных Then
            МаксимальноеКоличествоГласных = КолвоГласных
            НужноеСлово = word
        End If
    Next word
    If МаксимальноеКоличествоГласных = 0 Then
        MsgBox "Гласных в словах не найдено!", vbExclamation, "Проверка завершена"
    Else
        MsgBox "Максимальное количество гласных (" & МаксимальноеКоличествоГласных & _
               ") найдено в слове """ & НужноеСлово & """", vbInformation, "Проверка завершена"
    End If
End Sub

Function КоличествоГласных(ByVal Слово As String) As Integer
    txt = Replace(Слово, "а", "")
    txt = Replace(txt, "е", "")
    txt = Replace(txt, "и", "")
    КоличествоГласных = Len(Слово) - Len(txt)
End Function
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 17:26   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Я бы предложил способ в пять строк кода, но боюсь Вас в инсте сразу вычислят.
Вот в виде функции пользователя:

Код:
Function Get_MAX_Word(ByVal Cell As Range)
    Dim asArr, li As Long, sStr() As String, lMax As Long, lTmpMAX As Long, sWord As String
    asArr = Array("а", "е", "и"): sStr = Split(Cell, " ")

    For li = LBound(sStr) To UBound(sStr)
        lTmpMAX = lTmpMAX + (Len(sStr(li)) - Len(Replace(sStr(li), asArr(0), "")))
        lTmpMAX = lTmpMAX + (Len(sStr(li)) - Len(Replace(sStr(li), asArr(1), "")))
        lTmpMAX = lTmpMAX + (Len(sStr(li)) - Len(Replace(sStr(li), asArr(2), "")))
        If lMax < lTmpMAX Then lMax = lTmpMAX: sWord = sStr(li)
        lTmpMAX = 0
    Next li
    Get_MAX_Word = sWord
End Function
Поместите код в стандартный модуль книги.
В ячейке А1 Ваше предложение, в ячейку B1 вписываете данную функцию
=Get_MAX_Word(A1)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 19.04.2010, 17:53   #5
Rustamel
Пользователь
 
Регистрация: 18.04.2010
Сообщений: 13
По умолчанию

Большое человеческое спасибо!!!
Rustamel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная типа Char Sarumjan Общие вопросы C/C++ 4 10.01.2010 00:34
Файлы строкового типа (ПАСКАЛЬ) sir.andrey Помощь студентам 1 09.12.2009 14:33
Описать функцию CompressStr(S) строкового типа,выполняющую сжатие строки S Allen Iverson Паскаль, Turbo Pascal, PascalABC.NET 7 23.04.2009 01:07
Создание перечислимого строкового типа с возможностью использовать как STRING Alex Cones Общие вопросы Delphi 2 21.04.2009 13:56
Переменная типа PPixelArray ERASERROR Общие вопросы Delphi 2 11.03.2008 16:23