Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 41
1

Переставить местами слова с максимальной и минимальной длиной

01.12.2011, 16:28. Показов 2205. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести произвольное предложение, переставить местами слова с максимальной и минимальной длиной.
заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2011, 16:28
Ответы с готовыми решениями:

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

Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова единственные
Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова...

Поменять местами серии с минимальной и максимальной длиной
Задан целочисленный массив размером N. Поменять местами серии с минимальной и максимальной длиной....

Поменять местами серии массива с максимальной и минимальной длиной
Задан целочисленный массив размера N. Поменять местами серии с максимальной и минимальной длиной....

6
1591 / 558 / 74
Регистрация: 10.04.2009
Сообщений: 9,105
01.12.2011, 18:04 2
а если их будет несколько? а если они все одинаковы, головоломка
1
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 41
01.12.2011, 18:52  [ТС] 3
их будет несколько, но все будут разные
0
1591 / 558 / 74
Регистрация: 10.04.2009
Сообщений: 9,105
01.12.2011, 20:16 4
Цитата Сообщение от holder Посмотреть сообщение
их будет несколько, но все будут разные
видимо хотели сказать
их, слов будет несколько, но все они, слова по длине будут разные
Так, что ли?
1
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
01.12.2011, 23:10 5
Полчаса назад, после 2 часов борьбы, код заработал! Тема отличная, хочу сравнить с другими.

И наверно, идея использовать семейство Word была не лучшей — но зато удобно переставлять.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub SwapFirstTheLongestAndTheShortest()
'переставляет те первые слова в предложении Word, длина которых равна max и min
Dim min As Integer, minN As Integer, max As Integer, maxN As Integer
Dim N As Integer, minF As Integer, maxF As Integer, strWord As String
 
        max = 1:    maxF = 1    'задали максимум, покрывающий все вообразимые слова
        min = 100:  minF = 100  'так же и с минимумом: делаем его изначально большим
    
    With ActiveDocument.Sentences.First.Words   'работаем со словами 1-го предложения
        For N = 1 To .Count 'просматриваем слова с первого по последнее
        .Item(N).Select     'выделили N-е; но нас интересуют настоящие слова, из букв
        If Right(Selection, 1) = " " Then Selection.MoveLeft Extend:=wdExtend
                                'сняли выделение с правого пробела (это граница слова)
        minN = Len(Selection)
        If minN = 1 Then
            If Left(.Item(N), 1) Like "[A-zА-яЁё]" Then
                'выходим из цикла, если N-е слово состоит из 1 буквы - оно минимально
                min = 1: minF = N: Exit For
            Else
                GoTo NextN
            End If
        End If
        If minN < min Then min = minN: minF = N 'нашли (первый) минимум и номер слова
NextN:
        Next
                        MsgBox .Item(minF).Text, vbInformation, "1-е минимальное слово"
                        
        For N = 1 To .Count 'опять просматриваем слова - ищем первое максимальное
        .Item(N).Select
        If Right(Selection, 1) = " " Then Selection.MoveLeft Extend:=wdExtend
                                'сняли выделение с правого пробела (это граница слова)
        maxN = Len(Selection)
        If maxN > max Then max = maxN: maxF = N 'нашли (первый) максимум и номер слова
        Next
                        MsgBox .Item(maxF).Text, vbInformation, "1-е максимальное слово"
                        
        strWord = .Item(minF): .Item(minF) = .Item(maxF) & " ": .Item(maxF) = strWord
        'здесь можно ещё убрать лишние пробелы, но это уже слишком
    End With
End Sub
Миниатюры
Переставить местами слова с максимальной и минимальной длиной  
Изображения
  
1
0 / 0 / 0
Регистрация: 18.09.2010
Сообщений: 41
01.12.2011, 23:35  [ТС] 6
Sasha_Smirnov, а в аксесе это будет работать?

Добавлено через 12 секунд
Ципихович Эндрю, так
0
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
01.12.2011, 23:50 7
Лучший ответ Сообщение было отмечено как решение

Решение

Вариант с чистым VBA, для любого приложения.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub bb()
Dim s$, a$(), i&, L&, Lmax&, Lmin&, mx&, mn&
s = Trim$(InputBox("Введите предложение"))
Debug.Print vbLf; ">>> Исходное:"; vbLf; s
a = Split(Trim$(s))
Lmin = Len(a(0))
Lmax = Lmin
For i = 1 To UBound(a)
    L = Len(a(i))
    If L Then
        If L > Lmax Then
            Lmax = L: mx = i
        ElseIf L < Lmin Then
            Lmin = L: mn = i
        End If
    End If
Next
s = a(mx)
a(mx) = a(mn)
a(mn) = s
Debug.Print vbLf; ">>> Результат:"; vbLf; Join(a)
End Sub
2
01.12.2011, 23:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2011, 23:50
Помогаю со студенческими работами здесь

Переставить местами слово с минимальной длиной с последним словом
Дана строка симолов, содержащая 6 слов разной длины. Переставить местами слово с минимальной...

Поменять в матрице слова с максимальной и минимальной длиной в первой строке
Напишите программу, которая заполняет с клавиатуры массив А(3,3) словами разного размера и меняет в...

Найти в строке слова с максимальной и минимальной длиной и переписать их в другую строку
Ребят, выручите, пожалуйста. Найти слово с максимальной и минимальной длиной и переписать их в...

В тексте переставить слова минимальной и максимальной длины
Вводится текст. В тексте переставить слова минимальной и максимальной длины. Конец ввода F1.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru