
- •Контрольный пример Версия 1
- •Формат хранения данных
- •Пользовательские типы
- •Ограничение, условленное исполнением на компьютере
- •Организация интерфейса пользователя
- •Макеты ввода/вывода
- •Средства обеспечения ввода/вывода
- •Параметры функций
- •Блок-схемы. Алгоритм решения.
- •Текст программы
- •Результаты работы программы
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматизированного проектирования
отчет
по лабораторной работе №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 |
Переменная флаг для корректной обработки массива, не выходя за пределы блока и нахождения нужной полосы |