Автор работы: Пользователь скрыл имя, 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
Описание переменных функции представлено в таблице 5.
Формальные переменные | ||
Имя переменной |
Тип переменной |
Назначение переменной |
stroki |
int* |
Указатель на переменную количества строк текста |
massiv |
char** |
Указатель на адрес первого элемента текста |
Локальные переменные | ||
i |
int |
Счётчик строк |
Таблица 5. Описание переменных функции free
Прототип: void menu().
Функция menu используется для вывода меню на экран компьютера.
Результатом вызова функции является вывод на экран меню программы.
Пример вызова: menu().
Прототип: void help().
Функция help используется для вывода помощи пользователю на экран компьютера.
Результатом вызова функции является вывод на экран помощи пользователю программы.
Пример вызова: help().
Прототип: char** zamena(char** text, char* slovo, int kolstrok), переменные представлены в таблице 4.
Функция zamena используется для формирования нового текста.
Результатом вызова функции является формирование нового текста в памяти компьютера.
Пример вызова: newtxt = zamena(text, slovo, kolstrok), переменные представлены в таблице 6.
Описание переменных функции представлено в таблице 6.
Формальные переменные | ||
Имя переменной |
Тип переменной |
Назначение переменной |
text |
char** |
Указатель на адрес первого элемента введённого текста |
slovo |
char* |
Указатель на адрес первого элемента введённого слова |
kolstrok |
int |
Количество строк в тексте |
Локальные переменные | ||
newtxt |
char** |
Указатель на адрес первого элемента сформированного текста |
t1 |
char* |
Первоначальная строка |
t2 |
char* |
Новая строка |
i |
int |
Переменная для организации цикла |
j |
int |
Cчётчик по символу первоначальной строки |
y |
int |
Флажок для замены |
s |
int |
Длина копированного слова из первоначальной строки |
e |
int |
Переменная для организации цикла |
q |
int |
Cчётчик по символу новой строки |
Таблица 6. Описание переменных функции zamena
Блок-схема функции представлена на рисунке 3
Рисунок 3. Блок-схема функции zamena
Прототип: char* vvod_slova(), переменные представлены в таблице 7
Функция vvod_slova используется для ввода слова для замены пользователем. Результатом вызова функции является сохранение в памяти компьютера слова для замены, ввёденного пользователем с клавиатуры.
Пример вызова: slovo = vvod_slova(), переменные представлены в таблице 7
Описание переменных функции представлено в таблице 7.
Локальные переменные | ||
slovo |
char* |
Указатель на адрес первого элемента двумерного массива |
j |
int |
Счётчик по символам |
w |
int |
Переменная для организации выхода из набора текста |
key |
char |
Вводимый символ |
Таблица 7. Описание переменных функции vvod_slova
Блок-схема функции представлена на рисунке 4
Рисунок 4. Блок-схема функции vvod_slova
Рисунок 5. Блок-схема главной функции
Сообщения, использованные в блок-схемах
Сообщение 1
Введите текст
Сообщение 2
Введите слово
Сообщение 3
+++++++++++++++++++++++
================Выполнил студент группы № 1307 Ляховец Вадим===============
Сообщение 4
Ошибка, введите первый пункт меню
Сообщение 5
Контрольный вывод текста
Сообщение 6
Введённое вами слово -
Сообщение 7
Если вы хотите изменить данное слово, нажмите <1>, в противном случае любую другую клавишу
Сообщение 8
Замена слов проведена успешно
Сообщение 9
Ошибка, не было введено слово, выберите 3-ий пункт меню
Сообщение 10
Новый текст не был сформирован. Так как не был выбран 4-ый пункт меню
Сообщение 11
Новый текст:
Сообщение 12
Для выхода в меню нажмите любую клавишу
Сообщение 13
Для выхода из программы нажмите любую клавишу
Сообщение 14
Ошибка, введите номер операции:
Иерархическая структура программы представлена на рисунке 6.
Функция ввода
текста
Функция ввода
слова
Функция изменения текста
Функция вывода
помощи пользователю
Главная функция
Функция вывода меню
Функция вывода
текста
Функция освобождения
памяти
Рисунок 6. Иерархическая структура программы
#include <stdio.h>
#include <conio.h>
#include "cstdlib"
#include <stdlib.h>
#include <string.h>
//Курсовая работа работа. Выполнил студент группы №1307 Ляховец Вадим
void menu();
//…………………………………………………………………………
void help();
//…………………………………………………………………………
char** vvod(int* kolstrok); //ввод текста
//…………………………………………………………………………
void vivod(char** massiv, int stroki); //вывод текста
//…………………………………………………………………………
char* vvod_slova();
//…………………………………………………………………………
char** free1(char**massiv, int koltrok); //освобождение динамической памяти
//…………………………………………………………………………
char** zamena(char** text, char* slovo, int kolstrok); //замена слов
//…………………………………………………………………………
int main()
{
int kolstrok = 0; //количество строк
int f, z = 0, h, g = 0; //переменные для организации интерфейса
char **text = NULL; //указатель на введённый текст
char **newtxt = NULL; // указатель на сформированный текст
char *slovo = NULL; // указатель на введённое слово
printf("++++++++++++++++++++++
работы с текстом+++++++++++++++++++++++
"==================Выполнил студент группы № 1307 Ляховец
Вадим================== \n\n");
do
{
menu(); //вывод меню
scanf("%d", &f); //выбор пользователем пункта меню
fflush(stdin); //очистка буфера
system("cls");
switch(f)
{
case 1:
if (text!= NULL)
z = 1;
g = 0;
text = vvod(&kolstrok);
break;
case 2:
if (z == 0)
else
break;
case 3:
g = 0;
if (slovo != NULL)
if ((slovo == NULL)||(h == 1))