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

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

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

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

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

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

отчет

по лабораторной работе №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

не достаточно данных для выполнения

В файле отсутствуют символы

(любая версия)

Проблема, файл пуст!

Для классов аналогичная ситуация исключая внутренний маркер.

Макеты ввода/вывода

  1. Приветствие

Жигунова Олтьга Михайловна

Группа:3352

Лабораторная работа №1. Вариант 14

Версия: 1 (1.2)

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

  1. Чтение файла

f

  1. Файл f не найден

Ошибка открытия исходного файла

  1. Файл out не найден

Ошибка открытия файла записи

  1. Вывод строки

*a1.A[i]*

  1. Результат

Комбинация существует / комбинации не существует