Добавил:
надеюсь это добро кому-то поможет Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 сем лаба 2 Структуры и классы. Обработка текста..docx
Скачиваний:
0
Добавлен:
08.07.2025
Размер:
431.21 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра систем автоматизированного проектирования

отчет

по лабораторной работе №2

по дисциплине «Программирование»

Тема: «Структуры и классы. Обработка текста.»

Студентка гр. 3352

Преподаватель

Санкт-Петербург

2024

Исходная формулировка

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

Формальная постановка задачи

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

Обработка строк с помощью блоков:

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

Модули

Контрольный пример Версия 1

Начальная строки:

I know that you're waiting for me like dog

But have some patience for the part of me that's lost

There's been a hundred times

When don't recognize

Any of you that love me

Вывод по блокам 15*5:

БЛОК 1

строка 1| I know that you

строка 2| But have some p

строка 3| There's been a

строка 4| When don't reco

строка 5| Any of you that

БЛОК 2

строка 1| 're waiting for

строка 2| atience for the

строка 3| hundred times

строка 4| gnize

строка 5| love me

БЛОК 3

строка 1| me like dog

строка 2| part of me tha

строка 3|

строка 4|

строка 5|

БЛОК 4

строка 1|

строка 2| t's lost

строка 3|

строка 4|

строка 5|

самое короткое слово: me

Формат хранения данных

Имя

Тип

Назначение

I, p, j

int

Индексная переменные

flag

int

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

Sh, vi

const unsigned

Переменные ширины и высоты выделяемого блока

S, sy

char

Символы, считываемые из файла

f, out1

fstream

Чтение и запись в файл

nach, end

int

Переменные, хранящие индекс элемента начала и конца блока

koll

int

Переменная подсчитывающая количество строк в блоке

N, n

int

Начало блока, индекс верхнего первого элемента

num

int

Номер блока в полосе

e

int

Переменная количества строк в последнем блоке в конце файла

v

int

Переменная начала блока

dlW

int

Переменная длины слова

S, s1

Char

Переменная для считывания букв из файла

nP, nS

Int

Переменные для считывания номера полосы и строки

pol

Int

Количество полос в файле

flag

int

Вспомогательная переменная флаг

Pos, pos2

int

Длина массива слова

vs

int

Вспомогательная переменная для определения номера строки слова

Str, str2

int

Переменная номера строки слова

kollEnd

int

Длина массива итогового самого короткого слова

kk

int

Длина массива для слов

arrW[]

char

Массив для слова с которым сравниваются с другие

arrW2[]

char

Массив для слова которое сравнивается

arrRes[]

char

Массив для самого маленького слова

Пользовательские типы

StrP

Поля структуры

Тип

Назначение

Len

int

Переменная, хранящая длину строки

StrL

S[sh]

char

Массив символов шириной sh

lenn

int

Переменная хранящая количество символов в каждой строке блока

StrT

P[vi]

StrP

Структура начала и длины строк

T[vi]

StrL

Структура для хранения блока

Hei

int

Количество строк

Max

int

Максимальное количество символов в строке

kon

int

Переменная конца блока

flag

int

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