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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 21:19   #11
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub CommandButton2_Click()
s = InputBox("Text", , "Напечатать самое длинное слово из текста. (который пользователь вводит сам)")
'если длина строки больше 0 (строка не пустая)
If Len(s) > 0 Then
'до тех пор пока вхождение подстроки "  " /два пробела/ в введенную строку больше 0
'т.е. такая подстрока есть
Do While InStr(1, s, "  ") > 0 
'заменяем в введенной строке два пробела на один
s = Replace(s, " ", "")
Loop
a = Split(s, " ")'делаем из строки массив в котором элементы разделены пробелом - тб массив слов
ind = 0    'назначаем номер самого длинного слова для начала 0
Max =0 'и его длина =0
'в цикле от 0/нижний индекс массива слов/ до верхнего индекса массива слов
'т.е. просматриваем все слова
For i = 0 To UBound(a)
  If Max < Len(a(i)) Then'если находим более длинное слово
     Max = Len(a(i))'то его принимаем как самое длинное
     ind = i               'и запомим его индекс в массиве
  End If
Next i
         'выводим исх строка, переход на следующую строку вывода , сам дл сл = ел. массива слов 
                                                                                       'с определенным выше индексом   ind    
MsgBox s & vbNewLine & "самое длинное слово  = " & a(ind) & " ="
Else                     'иначе если строка пустая /условие в самом верху/
MsgBox "Error"   'сообщаем об ошибке (ввода)
End If
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 21:31   #12
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

Спасибо, gaw4 за комментарий.

Последний раз редактировалось Ingez; 24.03.2013 в 21:46.
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 21:37   #13
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub CommandButton1_Click()
s = InputBox("Text", , "Напечатать самое длинное слово из текста. (который пользователь вводит сам)")
s = Trim(s) & " "
k = 0
Max = 0: w = ""
For i = 1 To Len(s)
  If Mid(s, i, 1) <> " " Then
     k = k + 1
     w = w & Mid(s, i, 1)
  Else
    If i = Len(s) Then Exit For
     If Max < k Then
        Max = k
        mw = w
     End If
     w = ""
     k = 0
  End If
Next i
                                                                                              'с определенным выше индексом   ind
MsgBox s & vbNewLine & "самое длинное слово  = " & mw & " =" _
       & vbNewLine & "Dl:  " & Max
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 21:44   #14
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

Уважаемый, gaw4!
Спасибо! А не сможете закомментировать этот код тоже?
P.S.: Можно ли написать код без использования массивов?Такое возможно?

Последний раз редактировалось Ingez; 24.03.2013 в 21:56.
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 21:58   #15
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

1)мой последний код отличается от Вашего парой строчек и именами (думаю это не суть)
2) где Вы увидели массивы в этом коде
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 22:13   #16
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

Цитата:
Сообщение от gaw4 Посмотреть сообщение
1)мой последний код отличается от Вашего парой строчек и именами (думаю это не суть)
2) где Вы увидели массивы в этом коде
1)Сможете его закомментировать тоже? Не понятна ф-ия Trim()-что-то не помню такой ф-ий.Что-то очень много там переменных, мне ведь не надо считать кол-во букв в слове, нужно просто найти самое длинное слово.

2)А я и не говорил, что у Вас есть массивы. Я просто спросил.
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 22:28   #17
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub CommandButton1_Click()
s = InputBox("Text", , "Напечатать самое длинное слово из текста")
s = Trim(s) & " " 'удаляем лидирующие (до и после если есть) пробелы
                  'и потом добавляем один пробел как индикатор завершения слова
                  ' когда слово последнее

Max = 0: w = ""
For i = 1 To Len(s) 'по длине строки
  If Mid(s, i, 1) <> " " Then 'до следующего пробела
     w = w & Mid(s, i, 1) 'формируем слово прибавляя к нему
             'подстроку строки s начиная с позиции i  длиной 1 --- текущий не пробел
  Else         'иначе если пробел (слово закончилось)
     If Max < Len(w) Then 'если длина макс слова меньше только что сформированного
        Max = Len(w) 'то длину последнего прнимаем за макс
        mw = w  'и запомним слово как макс длины
     End If
     w = ""
  End If
Next i
                                                                                              'с определенным выше индексом   ind
MsgBox s & vbNewLine & "самое длинное слово  = " & mw & " =" _
       & vbNewLine & "Dl:  " & Max
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 22:33   #18
Ingez
Пользователь
 
Регистрация: 23.03.2013
Сообщений: 24
По умолчанию

А почему если немного переделать код уже не работает?

Код:
Sub slovo()
s = Val(InputBox("Введите текст"))
k = 0
Max = 0: w = ""
For i = 1 To Len(s)
  If Mid(s, i, 1) <> " " Then
     k = k + 1
     w = w & Mid(s, i, 1)
  Else
    If i = Len(s) Then Exit For
     If Max < k Then
        Max = k
        mw = w
     End If
     w = ""
     k = 0
  End If
Next i
MsgBox "Самое длинное слово: " & Str(mw)
End Sub
Я оставил только то, что понятно мне.
Ingez вне форума Ответить с цитированием
Старый 24.03.2013, 22:53   #19
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

s = s & " " вот это вы понимаете, если да, то вставьте
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 24.03.2013, 22:55   #20
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

такое впечатление что последний мой пост вы постоянно не читаете
что не понятно в
Код:
Private Sub CommandButton1_Click()
s = InputBox("Text", , "Напечатать самое длинное слово из текста")
s = Trim(s) & " " 'удаляем лидирующие (до и после если есть) пробелы
                  'и потом добавляем один пробел как индикатор завершения слова
                  ' когда слово последнее (если тут не понятно то вместо этого записать s = s & " "

Max = 0: w = ""
For i = 1 To Len(s) 'по длине строки
  If Mid(s, i, 1) <> " " Then 'до следующего пробела
     w = w & Mid(s, i, 1) 'формируем слово прибавляя к нему
             'подстроку строки s начиная с позиции i  длиной 1 --- текущий не пробел
  Else         'иначе если пробел (слово закончилось)
     If Max < Len(w) Then 'если длина макс слова меньше только что сформированного
        Max = Len(w) 'то длину последнего прнимаем за макс
        mw = w  'и запомним слово как макс длины
     End If
     w = ""
  End If
Next i
                                                                                    
MsgBox s & vbNewLine & "самое длинное слово  = " & mw & " =" _
       & vbNewLine & "Dl:  " & Max
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совместимость Excel 2007 VBA - Excel 2010 VBA Genas Microsoft Office Excel 2 28.11.2012 15:33
VBA Word,VBA Excel решить 2 задачи fafolo4ka Фриланс 6 05.03.2012 01:15
VBA michael D. Помощь студентам 1 01.03.2012 13:02
VBA kolochkov Microsoft Office Excel 13 09.04.2011 21:11