Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчеты по лабам вар 1.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
871 Кб
Скачать

Лабораторная работа № 4

Тема. Работа с файлами

Вариант №1

Задание: С помощью программных средств VBA разработать программу, считывающую из заранее созданного текстового файла фрагмент текста объемом 300 - 400 символов, содержащий буквы русского алфавита, цифры, знаки пунктуации и пробел. Текст должен быть представлен в отдельном окне с переносом информации на новую строку только в позиции пробела.

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

Отдельно вывести и подсчитать слова, содержащие нечетное число гласных и четное число согласных букв.

Пояснения: Алгоритм для данной задачи состоит в следующем:

Сначала создаётся текстовый файл (тип txt) для внесения исходных данных и заполняется текстом.

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

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

Далее, так как нам не нужны лишние пробелы, а так же знаки препинания и цифры (знаки препинания говорят о конце слова и в слово не входят, а цифры не являются буквами, и обычно используются отдельно от слов, например «261 вагон»), то мы удаляем их из полученной строки.

Определив длину преобразованной строки, начинаем ее обрабатывать исходя из условия задания:

Просматриваем все символы от 1 до последнего.

  1. Вводим вспомогательные строковые переменные для гласных и согласных букв.

  2. Отцепив первый символ, сравниваем его с пробелом (пробел свидетельствует о конце слова). Если символ не пробел, то прицепляем его к переменной, созданной для получения отдельных слов. Параллельно сцепляем в одну вспомогательную переменную только гласные буквы слова, а в другую только согласные. Так до тех пор, пока не соберем первое слово. В этом же цикле подсчитываем количество гласных и согласных букв слова и увеличиваем счетчик букв основной строки на 1 после просмотра каждой отдельной буквы.

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

  4. Просмотрев и обработав слово, мы «прокручиваем» пробелы.

Переходим к следующему слову, повторяя действия 1-4.

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

Когда все слова обработаны, закрываем все файлы и открываем их вновь через Word для просмотра.

Текст программы:

Sub var1()

Dim fname1 As String

Dim fname2 As String

Dim s, s1, p, pglas, psoglas As String

Dim i, j, t, k, n, n2, n3 As Integer

Dim retval

fname1 = "C:\var1_ishoddannie.txt" 'Полное имя файла с исходными данными

fname2 = "C:\var1_itogdannie.txt" 'Полное имя файла с итоговыми данными

'Создание файла var1_ishoddannie.txt

Open fname1 For Output As #1 'открытие файла var1_ishoddannie.txt

s = InputBox("Введите текст, содержащий буквы русского алфавита, цифры, знаки пунктуации и пробелы, объемом 300-400 символов") ' считывание строки

Print #1, s 'Запись введенного теста в файл C:\var1_ishoddannie.txt

Close #1 'Закрытие файлаC:\var1_ishoddannie.txt

Open fname1 For Input As #2 'Открытие файла для обработки

Open fname2 For Output As #3 'открытие файла var1_itogdannie.txt

s1 = "" ' вспомогатальная переменная, изначально пустая

s = "" 'строка, в которую соберем текст из файла

'пока не конец файла собираем строки файла в переменную S

Do Until EOF(2)

Line Input #2, s1

s = s + " " + s1

Loop

s1 = s 'вспомогательной переменной присвоили значение строки s

s = "" 'строка s - пустая

' в цикле от 1 до количества символов строки s1 исключаем знаки пунктуации

' и цифры из строки s1, собираем S по буквам

For i = 1 To Len(s1)

If Mid(s1, i, 1) Like "[-.!?,:;0123456789]" = False Then s = s + Mid(s1, i, 1)

Next

s = Trim(s) 'удалили пробелы в начале и конце строки, если они были

t = 0 ' счетчик слов, удовлетворяющих условию задачи

i = 1

n = Len(s)

While i <= n

p = ""

pglas = ""

psoglas = ""

n2 = 0

n3 = 0

' пока не дошли до пробела и i <= n собираем слово p и подсчитываем в нем количество букв

'а так же собираем отдельно все гласные этого слова

While Mid(s, i, 1) <> " " And i <= n

p = p + Mid(s, i, 1)

If Mid(s, i, 1) Like "[аяуюеёэиыо]" = True Then

pglas = pglas + Mid(s, i, 1)

n2 = n2 + 1

End If

If Mid(s, i, 1) Like "[йцкнгшщзхфвпрлджчсмтб]" = True Then

psoglas = psoglas + Mid(s, i, 1)

n3 = n3 + 1

End If

i = i + 1

Wend

'если колво гласных n2 больше или равно количеству согласных букв в слове записываем слово p в файл с результатом работы программы

If n2 Mod 2 And Not n3 Mod 2 Then

t = t + 1

Print #3, p

End If

'прокручиваем пробелы

While Mid(s, i, 1) = " " And i < n

i = i + 1

Wend

Wend

Print #3, "Слов где нечетное число гласных и четное число согласных " & t ' записываем количество слов в файл результата

Close #2 'закрываем файл var1_ishoddannie.txt

Close #3 'закрываем файл var1_itogdannie.txt

Documents.Open FileName:=fname1 'открываем файл через ворд для просмотра

Documents.Open FileName:=fname2 'открываем файл через ворд для просмотра

End Sub

Тест:

И сходные данные: Результат об работки