 
        
        - •Пользовательские типы
- •Ограничение, условленное исполнением на компьютере
- •Организация интерфейса пользователя
- •Макеты ввода/вывода
- •Средства обеспечения ввода/вывода
- •Параметры функций
- •Блок-схемы. Алгоритм решения.
- •Функции 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]* | 
| 
 | Комбинация существует / комбинации не существует | 
