ВНИМАНИЕДля получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru
💡 Время нашего ответа обычно составляет не более 10 минут.

Цель работы

Освоить работу со строковыми  данными в среде VBA.

Варианты заданий

Условие задачи
1

Подсчитать, сколько в строке слов, содержащих буквосочетание «мн».

2

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

3

В заданной строке найти слова четной длины и вывести их на экран в столбик.

4

В заданной строке символов, среди которых есть одно двоеточие, поменять местами группы символов, стоящие до двоеточия и после него.

5

С клавиатуры вводится строка, содержащая слово «дым» несколько раз. Заменить это слово словом «лед».

6

В заданной строке исключить группы символов, расположенные между скобками […]. Сами скобки тоже должны быть исключены. Предполагается, что в строке может быть несколько пар скобок, но внутри каждой пары нет других скобок.

7

В заданной строке определить, сколько раз в ней встречается сочетание букв «аб», удалить данное сочетание из строки.

8

В заданной строке найти те слова, которые начинаются и оканчиваются одной и той же буквой и вывести их в столбик.

9

В заданной строке найти те слова, которые начинаются с букв «т» или «п» и вывести их в столбик.

10

В заданной строке найти те слова, которые содержат хотя бы одну букву «м» и вывести их в столбик.

Лабораторная работа №6 предполагает написание программы/макроса на VBA in Excel. При заказе работы своего варианта вы получите качественно написанную и хорошо прокомментированную программу.

Если дополнительно закажите алгоритм решения вашей задачи (мы крайне рекомендуем это сделать), то получите аккуратно оформленный отчет-алгоритм, поясняющий все тонкости решения поставленной задачи.

Образец выполнения (вариант №2)

Условие задания

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

Алгоритм решения задачи

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

💡 Опытный реализатор студенческих работ, прочитав постановку задания, скажет, что формулировка явно неполная. Да, это так!

И вот, почему:

  1. Неизвестен алфавит, из которого строятся слова исходной строки. Другими словами, что следует понимать под «словом». Мы под «словом» будем понимать любой фрагмент строки, обрамленной пробелами.
  2. Допустима ли к обработке пустая строка? Мы реализуем так, что алгоритм будет корректно обрабатывать в том числе и пустые входные строки.
  3. Может ли больше одного пробела разделять слова в строке? Да, мы реализуем так, что алгоритм будет корректно обрабатывать любое количество пробелов-разделителей слов.
  4. Может ли строка начинаться с пробела и заканчиваться пробелом? Да, мы реализуем так, что алгоритм будет корректно обрабатывать и такие случаи.

Как известно из теории школьной математики ($3$ класс):

Целое число называется нечетным, если при делении на $2$ в остатке образуется $1$. Например, это числа: $5$, $17$, $2001$ и т.д.

Допустим, что на вход программе подается следующая строка
s = «Я учусь создавать макросы на VBA».
Все дальнейшие рассуждения будут привязаны к данной строке.

➡ Важнейший момент алгоритма! Нужно заметить, что во входной строке имеется чередование: слово — пробел — слово — пробел — слово и т.д. Не заметив этой особенности, можно очень долго и неэффективно решать поставленную задачу 🙂 

Данное чередование (слово — пробел) позволяет нам достаточно быстро и емко закодировать макрос, используя цикл. Достаточно лишь научиться обрабатывать одно слово, а остальные слова будет обрабатываться аналогично.

Детально рассмотрим обработку первого слова входной строки.

С точки зрения VBA in Excel строка имеет следующую структуру:

Структура строки с точки зрения VBA in Excel. РУК. Лабораторная работа №6. Задача №2.

Далее, находим самые левый (он является и самым первым пробелом, если двигаться по строке слева направо) пробел, а точнее его индекс.

Поиск самого левого пробела (самого первого пробела) в строке. РУК. Лабораторная работа №6. Задача №2.

После этого, нам необходимо вычленить первое слово. Как определить его границы? Поскольку оно самое левое слово в текущей строке, то это слово начинается от начала строки и заканчивается найденным ранее пробелом.

Вычленение самого первого (левого) слова в строке. РУК. Лабораторная работа №6. Задача №2.

➡ После вычленения слова необходимо получить его длину и проверить ее на нечетность. Если количество букв в полученном слове нечетно, то увеличиваем счетчик, отвечающий за результат на $1$.

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

Удаление только что обработанного слова и пробела, идущего за ним. РУК. Лабораторная работа №6. Задача №2.

После удаления только что обработанного слова, входная строка принимает вид:

Строка после удаления самого левого слова и пробела идущего за ним. РУК. Лабораторная работа №6. Задача №2.

➡ Дальнейшие вычленения слов из входной строки работают по принципу, описанному выше, поэтому весь процесс можно закодировать в цикле!

💡 Единственный момент, который нужно учесть — проверка самого последнего слова в строке. Почему здесь возникает нюанс? Потому что за последним словом пробела может не быть и алгоритм просто не учтет его при обработке. Следовательно, придется после окончания цикла отдельно проверить на нечетность самое последнее слово.

Решение задачи с использованием макроса на VBA

Результаты работы программы

Описание теста
1Вводим с клавиатуры строку, рассмотренную в алгоритме выше. Все слова разделяются строго одним пробелом. Перед первым и после последнего слова нет ни одного пробела.
ТТест №1. РУК. Лабораторная работа №6. Задача №2.
2Вводим с клавиатуры строку, состоящую только из слов четной длины. Также перед первым словом введем цепочку пробелов.
Тест №2. РУК. Лабораторная работа №6. Задача №2.
3Вводим с клавиатуры произвольную строку, слова в которой могут разделять произвольное количество пробелов.
Тест №3. РУК. Лабораторная работа №6. Задача №2.
ВНИМАНИЕДля получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru
💡 Время нашего ответа обычно составляет не более 10 минут.