Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгоритмы наиболее сложных функций

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

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

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

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

Кафедра Вычислительной техники

 

 

ПОЯСНТЕЛЬНАЯ ЗАПИСКА

К курсовой работе по информатике

По дисциплине «Информатика»

Вариант 17

 

Студент гр. 6491   Осокин И. С.
Преподаватель   Гречухин М. Н.

 

 

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


Цели

Цель курсовой работы – проверка всех знаний, методов и умений приобретённых при изучении базового курса С++.

В работе присутствует проверка знаний элементов следующей тематики:

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

Работа является итоговым срезом резюмирующим уровень владения изученным материалом и поэтому охватывает широкий спектр вопросов.

2) Условие:

Написать программу осуществляющую ввод, обработку и запись текста.

В тексте не более 25 строк, каждая не длиннее 100 символов, ввод с клавиатуры.

Программа должна «видеть» в тексте разделители (любые 5 символов, вводимых до ввода текста пробелы могут не являться разделителями) и производить с ними операции заданные в вашем задании

Условие остановки

Остановить ввод текста, если в последней строке нет ни одного символа-разделителя

Задание на обработку

Если в тексте общее количество цифр (не считая цифры-разделители) будет больше заданного пользователем лимита, необходимо выполнить замену всех гласных латинских букв на произвольный разделитель

Запись

Запись текста производить в файл.

 

3) Описание программы:

Программу обслуживает один класс Text
Алгоритм программы:

Прямоугольники с пунктиром
означают, что эти блоки требуют
более детальной проработки
Эта проработка
(алгоритмы)
представлены после описания
класса. В разделе
«Алгоритмы основных функций.»

Описание Класса

Свойства класса:

Имя Тип доступ Смысловая функция
TXT String[25] Private Буфер для хранения и обработки текста
razd Char[6] Private Хранит разделители
str String Private Хранит необработанную строку ввода.

Методы класса:

Имя метода возвр. знач доступ Пара-метры Смысловая интерпретация метода
SetRazd void Public void Ввод разделителей с клавиатуры
SetText void Public void Ввод текста в последней строке не 0 разделителей
ConsiderNumbers int Public void Считает число цифр во всём тексте, разделители не учитываются
ConsiderRazd int Public int Считает разделители в строке номер которой принимает как параметр
RewriteText void Public void Изменяет текст, заменяя все глассные на первый разделитель
GetText void Public void Записывает в файл все строки до последней не пустой включительно
ConsiderStrok int Public void Находит номер последней непустой строки.

5) Дополнительные функции программы:

Перечень дополнительных возможностей программы не заданных по условию:

· При вводе разделителей производится проверка, чтобы символы были различны и если символов больше чем 5 то все одинаковые будут выброшены, а взяты первые 5 различных.

· Если введённая строка длиннее чем 100 символов – программа автоматически обрежет лишние символы

· Произвольный разделитель на который следует заменить английские гласные выбирается так, чтобы сам он не являлся английской гласной (если это возможно) если же все разделители гласные, то будет выведено предупреждение

Алгоритмы наиболее сложных функций

Примечание: Здесь и далее циклы ведут перебор с нулевого значения по порядку.

· Text::SetRazd //вводит разделители

Основную часть кода занимает доп. функция отбраковка одинаковых символов

· Text::SetText // вводит текст

· Text::RewriteText //изменяет текст заменяя англ. гласные

Основную часть метода занимает доп. функция выбор разделителя для замены

7) Оптимальность:

Поскольку ввод производится с клавиатуры, а вывод в файл, а также учитывая небольшой размер текста, то требуется хранение текста в «буфере». Если буфер представлен массивом 25 строк по 101 символу общая память в этом случае займёт около 2,5 мегабайт, что непродуктивно. Гораздо лучше создать массив string[25] который займёт в худшем случае всего 24 байта лишнего места.

Создание динамического массива строк, не продуктивней, хоть вес самого указателя 8 байт, но поскольку число строк не известно изначально, то на постепенное увеличение массива будет затрачено больше.ресурсов, чем на хранение лишних 16 байт памяти.

Разделители ввиду постоянства их количества можно поместить в char[6] это не отразиться на продуктивности программы. Дополнительная функция предпологает такую возможность, но указатель весит 8 байт против 6 байт статичекого массива.

Чтобы однозначно длина строки не превышала 100 символов можно ввести промежуточную строку – запись будет сперва в нёе, а затем уже с проверкой условий переносится в буфер текста.

Очевидно, что для реализации программы достаточно одного класса. Поскольку описанные переменные должны непрерывно в течение всей работы программы взаимодействовать друг с другом

 

Проверка на правильность

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

ПРОВЕРКА №1

Ввод: Вывод:

 

 

Анализ: Программа сработала штатно, ошибок не выявлено, результат верный

ПРОВЕРКА №2

Ввод:

 

 

Вывод:

 

Анализ: Программа сработала штатно, ошибок не выявлено, результат верный

Обрезка строки выполнена правильно.

Проверка завершена успешно, всё ОК.!

 

Вывод

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

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

Результаты и ход работы отражены в подробном отчёте, который содержит не только пояснения к устройству программы и перечень возможностей, но и рассуждения об оптимальности программы, а также проверку превильности работы программы.

К работе прилагается исходный код и скомпилированный файл программы.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...