
- •Пользовательские типы
- •Ограничение, условленное исполнением на компьютере
- •Организация интерфейса пользователя
- •Макеты ввода/вывода
- •Средства обеспечения ввода/вывода
- •Параметры функций
- •Блок-схемы. Алгоритм решения.
- •Функции Get, Set
- •Программа Версия 1. Функция ReadMark1
- •Версия 1.2 Полная программа
- •Версия 2.1. Полная программа
- •Версия 2.2. Отличающаяся часть от версии 2.1
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматизированного проектирования
отчет
по лабораторной работе №1
по дисциплине «Программирование»
Тема: «Структуры и их реализация на языке С++. Обращение к полям структуры. Массивы структур. Понятие класса и его реализация в языке С++. Данные и функции класса.»
Студентка гр. 3352 |
|
|
Преподаватель |
|
|
Санкт-Петербург
2024
Исходная формулировка
Определить, имеется ли в заданной строке подстрока, содержащая заданное число повторяющихся заданных символов.
Формальная постановка задачи
Требуется считать первые 4 (для второй версии 5) символов в качестве опорных элементов задачи, где первый элемент – маркер для ограничения строки, второй – маркер для обработки изначального текста, третий – символ, который требуется найти в строке определенное количество раз, заданных четвертым символом. Для второй версии требуется еще один элемент, который будет считан в качестве количества символов, которые в конечном итоге будут обработаны программой.
Программа отрабатывает варианты, в которых вместо цифр введены буквы и аварийно заканчивает работу.
При недостаточном числе символов в строке или их отсутствии программа также завершается и пользователю сообщается об ошибке.
При достаточном количестве нужных символов, в обработанной строке проверяется случай, в котором нужный символ находится определенное количество раз в словах.
Обработка строк:
Первый символ в файле считывается как маркер, определяющий до какого символа обрабатается строка. Второй определяет точку, после которой строка не записывается в итоговый файл. При этом первый маркер становится “итым” элементом массива полученных данных.
Все символы после маркеров не читаются.
Для версий 2.1 и 2.2 подсчитывается количество символов. В дальнейшем программа опирается на это количество.
Пример строки:
Версия 1 |
@ |
# |
w |
3 |
a |
b |
c |
|
w |
w |
w |
w |
# |
4 |
r |
r |
r |
@ |
k |
|
Версия 2 |
@ |
# |
w |
3 |
9 |
|
r |
r |
w |
|
w |
q |
t |
|
|
u |
u |
# |
|
|
Темно серым выделены маркеры, светлым считываемая строка. Для версий 2.1 и 2.2 внутренний маркер отсутствует.
Контрольный пример
Версия 1
Начальная строка:
Hedgehog www cat cat dog @ d#og
Маркер 1: @
Маркер 2: #
Символ, который ищется в строке: w
Число повторений данного символа в строке: 3
Строка, которая обработается: Hedgehog www cat cat dog
Комбинация существует
Версия 1.2
Начальная строка:
Hippo noodles aaaaa
Маркер 1: $
Маркер 2: &
Символ, который ищется в строке: a
Число символов, обрабатываемых в программе: 15
Число повторений данного символа в строке: 5
Строка, которая обработается: Hippo noodles a
Комбинации не существует
Для версий 2.1 и 2.2 примеры аналогичны, исключая наличие внутреннего маркера.
Формат хранения данных
Имя |
Тип |
Назначение |
i |
int |
Индексная переменные |
flag |
int |
Вспомогательная переменная, отвечающая за выполнение функций после Readmark |
count |
int |
Переменная, хранящая количество идущих подряд одинаковых символов |
N |
const unsigned |
Переменная размера выделяемого массива символов |
Kol,kolll |
int |
Количество искомых символов |
symbol |
char |
Символ, который ищется в строке |
F, out |
fstream |
Чтение и запись в файл |
A[N] |
char |
Массив, хранящий символы строки |
L,LL |
int |
Переменные количества символов для версии 2 |
t |
int |
Вспомогательная переменная считающая символы в строке |
Mark |
char |
Маркер для обозначения конца строки |
Пользовательские типы
Struct strM |
||
Поля структуры |
Тип |
Назначение |
A[n+1] |
char |
Массив, хранящий символы строки |
Mark |
char |
Маркер для обозначения конца строки |
Class StrM |
||
Данные и функции класса |
Тип |
Назначение |
private |
||
A[N] |
char |
Массив, хранящий символы строки |
Mark |
char |
Маркер |
kol |
int |
Количество искомых символов |
symbol |
char |
Переменная для считывания символа |
L,LL |
int |
Переменные количества символов для версии 2 |
count |
int |
Переменная, хранящая количество идущих подряд одинаковых символов |
t |
int |
Вспомогательная переменная считающая символы в строке |
flag |
int |
Вспомогательная переменная, отвечающая за выполнение функций после Readmark |
kolll |
int |
Переменная для второй версии |
Функции описаны ниже |
Ограничение, условленное исполнением на компьютере
тип int – диапазон 32768 до 32767
тип float - диапазон от 3,4E–38 до 3,4E+38
тип char - диапазон от -128 до 127, либо от 0 до 255.
Организация интерфейса пользователя
inM.txt |
out.txt |
Версия 1: W S D 7 *строка* |
Символ, который ищется в строке: D Количество таких символов: 7 *строка* комбинации не существует/существует |
Версия 2: W S D 15 7 *строка* |
Символ, который ищется в строке: D Настоящее количество символов в строке: 15 Количество таких символов: 7 *строка* комбинации не существует/существует |
*вместо символа введена буква* (любая версия)
|
Символ, который ищется в строке: w Настоящее количество символов в строке 15 Символ не является числом, программа не выполняется дальше |
*Введено меньше данных* (любая версия) |
Символ, который ищется в строке: w не достаточно данных для выполнения |
В файле отсутствуют символы (любая версия) |
Проблема, файл пуст! |
Для классов аналогичная ситуация исключая внутренний маркер.
Макеты ввода/вывода
|
Жигунова Олтьга Михайловна Группа:3352 Лабораторная работа №1. Вариант 14 Версия: 1 (1.2) Задание: Определить, имеется ли в заданной строке подстрока, содержащая заданное число повторяющихся заданных символов. |
|
f |
|
Ошибка открытия исходного файла |
|
Ошибка открытия файла записи |
|
*a1.A[i]* |
|
Комбинация существует / комбинации не существует |