Автор работы: Пользователь скрыл имя, 22 Марта 2012 в 19:09, курсовая работа
Разработать алгоритм и написать программу исходя из индивидуального задания
Индивидуальное задание:
Задан текст, содержащий произвольное количество строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации (перенос слов с одной строки на другую не используется). Сформировать новый текст, который является результатом следующего преобразования исходного текста: заменить слова, содержащие цифры, на другое слово.
Цель работы ………………………………………………………………...……...……. 3
Задание ……………………………………………………………………….………….. 3
Уточнение задания ……………………………………………………………………… 3
Контрольные примеры .………………………...………………………………………. 3
Описание переменных ………………………………………………………………….. 4
Описание алгоритма ……………………………………………………………………. 4
Функции …………………………………………………………………………………. 6
Функция vvod …………………………………………………………………..…… 6
Функция vivod ……………………………………………………………………… 8
Функция free1 ………………………………………………………………………. 9
Функция menu ………………………………………………………..……..……… 9
Функция help …………………………………………………………………..…… 9
Функция zamena …………………….…………………………………………….. 10
Функция vvod_slova……………………………………………………………….. 13
Блок-схема главной функции ……………………………….………...……………… 14
Иерархическая структура программы ……………………………………………….. 17
Текст программы ……………………………………………………………………… 18
Инструкция пользователю …………………………………………………….……… 25
Набор тестов …………………………………………………………………...……… 25
Результат выполнения программы …………………………………………………… 26
Вывод ………………………………………………………………………………….. 26
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Санкт-Петербургский
Кафедра вычислительной техники
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОЙ РАБОТЕ
на тему:
«Работа с текстом»
по дисциплине «Программирование»
Выполнил: студент группы №1307
Ляховец Вадим Михайлович
Проверил: к.т.н., доцент кафедры ВТ
Сискович Тамара Ильинична
Санкт-Петербург
2012 г.
Содержание
Получить практические навыки работы с символьными строками. Научить выполнять основные операции с символьными строками.
Разработать алгоритм и написать программу исходя из индивидуального задания
Индивидуальное задание:
Задан текст, содержащий произвольное количество строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации (перенос слов с одной строки на другую не используется). Сформировать новый текст, который является результатом следующего преобразования исходного текста: заменить слова, содержащие цифры, на другое слово.
В программе должно быть использовано простейшее меню. Выполнение программы должно быть многократным по желанию пользователя. В программе должны быть использованы функции ввода, вывода текста и формирования нового текста. Все данные вводятся с клавиатуры. Для перехода к следующей строке использовать <<ENTER>>. Ввести можно только одно слово.
Контрольные примеры представлены в таблице 1.
Таблица 1. Контрольные примеры
Введённый текст |
Введённое слово для замены |
Вывод изменённого текста |
Было 5 человек, у каждого было по 5 друзей, у каждого из которых было ещё по 5 друзей. |
пять |
Было пять человек, у каждого было по пять друзей, у каждого из которых было ещё по пять друзей. |
За окном идёт снег. |
зима |
За окном идёт снег. |
Конец света будет в 2012-ом году. |
3012-ом |
Конец света будет в 3012-ом году. |
Пять, шесть, семь восемь, сто один. |
1 |
Пять, шесть, семь восемь, сто один. |
4то это? |
Что |
Что это? |
Описание переменных представлено в таблице 2
Таблица 2. Описание переменных
Имя переменной |
Тип переменной |
Назначение переменной |
text |
char** |
Указатель на адрес первого элемента введённого текста |
newtxt |
char** |
Указатель на адрес первого элемента сформированного текста |
slovo |
char* |
Указатель на адрес первого элемента введённого слова |
kolstrok |
int |
Количество строк в тексте |
f |
int |
Переменная для организации меню и цикла |
z |
int |
Вспомогательная переменная для проверки выбора 1-го пункта меню |
h |
int |
Вспомогательная переменная для проверки ввода слова |
g |
int |
Вспомогательная переменная для проверки выбора 4-го пункта меню |
Шаг 1. Вывод меню на экран.
Шаг 2. Выбор пользователем пункта меню. Вначале пользователь должен выбрать только пункт 1 меню, иначе вывод сообщения об ошибке с просьбой выбрать пункт 1 меню, также пользователь может ввести слово для замены, посмотреть справку пользователя и выйти из программы
Шаг 3. Если пользователь ввёл:
«1», то вызывается функция free1, которая освобождает память, если был введён текст до этого, далее вызывается функция vvod, в которой производится вывод сообщения на экран для пользователя с просьбой ввести текст. После этого происходит ввод текста. После переход к шагу 1.
«2», то вызывается функция vivod, которая производит контрольный вывод текста на экран. После этого переход к шагу 1.
«3», то вызывается функция free1, которая освобождает память, если до этого было введено слово, далее вызывается функция vvod_slova, которая выводит сообщение с просьбой ввести слово и происходит ввод пользователем слова для замены. После переход к шагу 1.
«4», то вызывается функция free1, которая освобождает память, если до этого был сформирован текст, далее вызывается функция zamena, которая производит формирование нового текста и вывод сообщения с подтверждением операции, После этого переход к шагу 1.
«5», то вызывается функция vivod, которая выводит сформированный текст, если текст не сформирован, то выводится сообщение с указанием причины, почему текст не сформирован (или потому что, пользователь не сформировал текст (т.е. не выбрал 4-ый пункт меню), или потому, что текст не может быть сформирован). После этого переход к шагу 1.
«6», то вызывается функция help, которая выводит помощь пользователю, далее выводится сообщение «Для выхода в меню нажмите любую клавишу». После этого переход к шагу 1.
«7», то вызывается функция free1, которая освобождает память, далее выводится сообщение «Для выхода нажмите любую клавишу» и конец алгоритма.
другое значение, то выводится сообщение «Ошибка, введите номер операции». После этого переход к шагу 1.
Блок-схема главной функции представлена на рисунке 5.
Прототип: char** vvod(int *stroki), переменные представлены в таблице 3
Функция vvod используется для ввода исходного текста пользователем. Результатом вызова функции является сохранение в памяти компьютера текста, ввёденного пользователем с клавиатуры.
Пример вызова: text = vvod(&kolstrok), переменные представлены в таблице 3
Описание переменных функции представлено в таблице 3.
Таблица 3. Описание переменных функции vvod
Формальные переменные | ||
Имя переменной |
Тип переменной |
Назначение переменной |
stroki |
int* |
Указатель на переменную количества строк текста |
Локальные переменные | ||
text |
char** |
Указатель на адрес первого элемента текста |
s |
char |
Вводимая пользователем строка |
i |
int |
Счётчик по строкам |
j |
int |
Счётчик по символам |
w |
int |
Переменная для организации перехода на следующую строку |
v |
int |
Переменная для организации выхода из набора текста |
Блок-схема функции представлена на рисунке 1
Рисунок 1. Блок-схема функции vvod
Прототип: void vivod (char ** massiv, int stroki), переменные представлены в таблице 4.
Функция vivod используется для вывода исходного и преобразованного текста. Результатом вызова функции является вывод на экран текста.
Пример вызова: vivod(text, kolstrok), переменные представлены в таблице 4
Описание переменных функции представлено в таблице 4.
Формальные переменные | ||
Имя переменной |
Тип переменной |
Назначение переменной |
stroki |
int* |
Указатель на переменную количества строк текста |
massiv |
char** |
Указатель на адрес первого элемента текста |
Локальные переменные | ||
i |
int |
Счётчик по строкам |
j |
int |
Счётчик по символу |
Таблица 4. Описание переменных функции vivod
Блок-схема функции
Рисунок 2. Блок-схема функции vivod
Прототип: char** free1(char** massiv, int kolstrok), переменные представлены в таблице 5
Функция free1 используется для освобождения динамической памяти после её выделения.
Результатом вызова функции является освобождение памяти компьютера, в которой хранились значения матриц.
Пример вызова: .free1(newtxt, kolstrok)