Обработка текста

Работа с символьными строками, их основные функции. Разработка алгоритма, характеристика и описание переменных и функций. Иерархическая структура вызова функций. Текст программы, инструкция пользователя. Проверка программы с помощью набора тестов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.11.2017
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

25

Размещено на http://www.allbest.ru/

Министерство науки и образования РФ

Федеральное государственное автономное образовательное

учреждение высшего профессионального образования

"Санкт-Петербургский государственный электротехнический

университет "ЛЭТИ" им.В.И. Ульянова (Ленина)"

(СПбГЭТУ "ЛЭТИ")

Факультет компьютерных технологий и информатики

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

Курсовая работа

на тему: “Обработка текста”

по дисциплине “Программирование”

Выполнил: Кановский И.В.

Группа 4306

Принял: к. т. н., доцент Сискович Т.И.

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

Оглавление

  • 1. Цель
  • 2. Краткое описание алгоритма
  • 3. Описание функций
  • Описание функции print
  • Описание функции poryadok
  • Описание функции punct
  • Описание функции fre
  • Описание функции mallok
  • Описание функции Help
  • 4. Иерархическая структура вызова функций
  • 5. Текст программы
  • 6. Набор тестов
  • Результаты решения задачи
  • Вывод

1. Цель

Получить практические навыки работы с символьными строками. Научиться выполнять основные функции с ними.

1. Задание

Разработать алгоритм и написать программу исходя из индивидуального задания.

Индивидуальное задание:

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

2. Уточнение задания

В программе должно быть использовано простейшее меню. Выполнение программы должно быть многократным по желанию пользователя. В программе должны быть функции ввода текста, вывода текста, формирования нового текста и вывода его на экран. Все данные вводятся с клавиатуры. Для перехода к следующей строке использовать клавишу "Enter". Ввод заканчивается после ввода символа ”@”.

Пункты меню:

1: Ввод текста

2: Вывод исходного текста

3: Обработка текста

4: Вывод результата обработки

5: Выход

3. Контрольные примеры

Контрольные примеры представлены в Таблице 1.

Таблица 1. Контрольные примеры

примера

Исходные данные

Результат

1

Poka, mama

Ja poshol v shkoly

Poka, mama

Shkoly poshol ja v

2

-

Вы не ввели текст.

3

I am child

I am student! ''

I am=teacher

I+ //. am director

I am child

student am I

I am=teacher

Director am I

4

Privet vsem

Utro dobroe

Privet vsem

dobroe Utro

4. Описание главной функции

Назначение: начальная точка выполнения алгоритма.

Описание переменных функции

Описание переменных представлено в Таблице 2.

Таблица 2. Описание переменных главной функции

Имя переменной

Тип

Назначение

b

сhar*

Считывающая строка

сс

int

Переключатель

vd

int

Флажок ввода

obr

int

Флажок обработки

m

int

Кол-во строк в тексте

t

char**

Указатель на первый элемент первой строки входного текста

r

char**

Указатель на первый элемент первой строки выходного текста

2. Краткое описание алгоритма

Начало программы.

Шаг №1. Вывод меню.

Шаг №2. Выбор пользователем пункта меню.

Шаг №3. Переход к пункту, выбранным пользователем.

1: Ввод текста. Переход к шагу 2

2: Вывод исходного текста. Переход к шагу 2

3: Обработка текста. Переход к шагу 2

4: Вывод результата обработки. Переход к шагу 2

5: Выход. Переход к шагу 4.

Шаг №4. Конец программы.

Блок-схема главной функции

Блок-схема главной функции представлена на рисунке 1:

3. Описание функций

Описание функции reallok

Назначение: Функция используется для ввода текста.

Прототип: char** reallok (char**, int, int*);, где int* - указатель на адрес количества строк исходного текста; char** - тип возвращаемого значения, int - число символов в строке. Пример вызова: t=reallok (t,n,&m);, где t указатель на адрес первого элемента первой строки исходного текста, &m - адрес кол-ва строк исходного текста, n - число символов в строке.

Вызывающая функция: main.

Описание переменных.

Описание переменных функции type_text представлены в Таблице 3.

Таблица 3. Описание переменных функции type_text

Имя переменной

Тип

Назначение

Локальные переменные

t

char**

Указатель на адрес первого элемента первой строки входного текста

b

char

Массив символов, размер которого 81

i,j

int

Счётчики

Формальные переменные

m

int*

Указатель на кол-во строк исходного текста

Блок-схема reallok

Блок-схема функции reallok представлена на рисунке 2.

Рис.2. Блок-схема функции reallok

Описание функции print

Назначение: Функция используется для вывода текста.

Прототип: void print (char**, int, int);, где char** - указатель на первый элемент первой строки текста, первый int - кол-во строк текста, второй int - кол-во символов в строке.

Пример вызова: print (t,n,m);, где t - указатель на адрес первого элемента первой строки текста, m - кол-во строк текста, n - кол-во символов в строке.

Вызывающая функция: main.

Описание переменных

Описание переменных функции print представлены в Таблице 4.

Таблица 4. Описание переменных функции print

Имя переменной

Тип

Назначение

Локальные переменные

i

int

Счётчик

Формальные переменные

t

char**

Указатель на первый элемент первой строки входного текста

n

int

Кол-во символов в строке

m

int

Кол-во строк текста

Блок-схема print

Блок-схема функции print представлена на рисунке 3.

Рис.3. Блок-схема функции print

Описание функции poryadok

Назначение: Функция используется для обработки текста.

Прототип: char** poryadok (char**, char**, int, int);, где первый char** - указатель на адрес первого элемента первой строки исходного текста, второй **char - указатель на адрес первого элемента первой строки конечного текста, первый int - кол-во строк исходного текста, второй int - кол-во строк сформированного текста; char** - тип возвращаемого значения.

Пример вызова r=poryadok (t,r,n,m);, где r - указатель на адрес первого элемента первой строки нового текста t - указатель на адрес первого элемента первой строки исходного текста, m - кол-во строк исходного текста, n - кол-во символов в строке.

Вызывающая функция: main

Вызываемая функция: punct.

Описание переменных

Описание переменных функции poryadok представлены в Таблице 5.

Таблица 5. Описание переменных функции poryadok

Имя переменной

Тип

Назначение

Локальные переменные

Newtext

char**

Указатель на адрес первого элемента первой строки сформированного текста

i,j,e,k,s,q

int

Счётчики

l

int

Хранитель кол-ва слов в строке

x,y,z

int

Переменные, используемые при сортировке слов в строках

a, c, d

int

Массивы, содержащие число гласных букв в слове, координаты начал и координаты концов слов

Формальные переменные

t

char**

Указатель на адрес первого элемента первой строки входного текста

r

char**

Указатель на адрес первого элемента первой строки выходного текста

m

int

Кол-во строк текста

n

int

кол-во символов в строке

Блок-схема poryadok

Блок-схема функции poryadok представлена на рисунке 4.

Рис.4. Блок-схема функции poryadok

Описание функции punct

Назначение: Функция используется для проверки символа на разделитель.

Прототип: int punct (char);, где char - проверяемый символ; int - тип возвращаемого значения.

Пример вызова: punct (t [i] [j]), где t [i] [j] - j-ый символ в слове.

Вызывающая функция: poryadok.

Описание переменных

Описание переменных функции представлены в Таблице 7.

Таблица 7. Описание переменных функции punct

Имя переменной

Тип

Назначение

Локальные переменные

isSymb

int

Флаг, отвечающий за проверку, является ли символ разделителем

i

int

Счётчик

Формальные переменные

symb

char

Проверяемый символ

Блок-схема punct

Блок-схема функции punct представлена на рисунке 6.

Рис.6. Блок-схема функции punct

Описание функции fre

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

Прототип: char** fre (char**, int);, где сhar** - указатель на адрес первого элемента первой строки текста, int - кол-во строк текста; char** - тип возвращаемого значения.

Пример вызова: t=fre (t, m);, где t - указатель на адрес первого элемента первой строки текста, m - кол-во строк текста.

Вызывающая функция: main.

Блок схема функции не представлена из-за очевидности выполнения алгоритма.

Описание переменных

Описание переменных функции fr представлены в Таблице 8.

Таблица 8. Описание переменных функции fr

Имя переменной

Тип

Назначение

Локальные переменные

i

int

Счётчик

Формальные переменные

t

char**

Указатель на адрес первого элемента первой строки входного текста

m

int

Кол-во строк текста

Описание функции mallok

Назначение: Функция используется для выделения памяти, для выходного текста.

Прототип: char** mallok (int, int);, где первый int - число символов в строке, второй int - кол-во строк текста; char** - тип возвращаемого значения.

Пример вызова: r=mallok (m,n);, где m - кол-во строк текста, n - кол-во cимволов в строке.

Вызывающая функция: main.

Блок схема функции не представлена из-за очевидности выполнения алгоритма.

Описание переменных

Описание переменных функции mallok представлены в Таблице 8.

Таблица 8. Описание переменных функции mallok

Имя переменной

Тип

Назначение

Локальные переменные

i

int

Счётчик

y

Char**

Указатель на адрес первого элемента первой строки входного текста

Формальные переменные

n

int

Число символов в строке

m

int

Кол-во строк текста

Описание функции Help

Назначение: Функция используется для вывода справки.

Прототип: void Help ();, где void - тип не возвращаемого значения.

Пример вызова: Help ();

Вызывающая функция: main.

Блок схема функции не представлена из-за очевидности выполнения алгоритма.

4. Иерархическая структура вызова функций

Иерархическая структура вызова функций представлена на рисунке 7.

Рис.7. Иерархическая структура вызова функций

5. Текст программы

#include <stdio. h>

#include <conio. h>

#include <locale. h>

#include <stdlib. h>

#include <string>

void Help ();

char** poryadok (char**, char**, int, int);

char** fre (char**, int);

void print (char**, int, int);

char** reallok (char**, int, int*);

char** mallok (int, int);

char** probel (char**, int, int);

int punct (char);

int main ()

{

setlocale (LC_ALL, "RUS");

const int n=81;

int m, cc, vd=0, obr=0;

char b [n], **t, **r;

do

{

puts ("Меню: ");

puts ("1) Вызвать справку");

puts ("1) Ввести текст");

puts ("2) Показать введенный текст");

puts ("3) Обработать текст");

puts ("4) Показать обработанный текст");

puts ("5) Выход");

printf ("Введите номер пункта: ");

scanf ("%d", &cc);

switch (cc)

{

Case 0:

Help ();

Break;

case 1:

obr=0;

t=reallok (t,n,&m);

r=mallok (m,n);

r=probel (r,n,m);

vd=1;

break;

case 2:

if (vd==1)

{

puts ("Введены строки: ");

print (t,n,m);

}

else

printf ("Сначала нужно ввести текст, выбрав пункт 1) \n");

break;

case 3:

if (vd==1)

{

r=poryadok (t,r,n,m);

printf ("Текст обработан. \n");

}

else

printf ("Сначала нужно ввести текст, выбрав пункт 1) \n");

obr=1;

break;

case 4:

if (vd==1)

if (obr==1)

print (r,n,m);

else

printf ("Сначала нужно обработать текст, выбрав пункт 3) \n");

else

printf ("Сначала нужно ввести текст, выбрав пункт 1) \n");

break;

case 5:

printf ("Пока!");

break;

default:

printf ("Такого пункта не существует. Введите пункт меню ещё раз\n");

}

}

while (cc! =5);

if (vd==1)

{

t=fre (t,m);

r=fre (r,m);

}

}

char** reallok (char** t, int n, int *m)

{

int i, j;

char b [n];

b [0] =' ';

t= (char**) malloc (sizeof (char*));

for (i=0; b [0]! ='@'; i++)

{

gets (b);

if (b [0]! ='@')

{

puts ("Введи строку");

t= (char**) realloc (t, (i+1) *sizeof (char*));

* (t+i) = (char*) malloc (n*sizeof (char));

for (j=0; j<n-1; j++)

t [i] [j] =' ';

strcpy (t [i],b);

}

}

*m=i-1;

return (t);

}

char** poryadok (char** t, char** r, int n, int m)

{

int i, j, a [n], c [n], d [n], l, k, s, x,y, z, q, e;

char b [n];

for (i=0,l=0,q=0,j=0; i<m; i=i+2)

{

l=0; q=0; j=0;

for (e=0; e<n; e++)

{

a [e] =0;

c [e] =0;

d [e] =0;

}

while (punct (t [i] [j]) ==1)

j++;

c [0] =j;

for (; (j<n-1) && (t [i] [j-1]! ='\0'); j++)

{

if (t [i] [j] =='a'||

t [i] [j] =='e'||

t [i] [j] =='i'||

t [i] [j] =='o'||

t [i] [j] =='u'||

t [i] [j] =='y')

a [l] ++;

if (punct (t [i] [j]) ==1)

{

if (punct (t [i] [j-1]) ==0)

d [l] =j-1;

if ( (punct (t [i] [j+1]) ==0) && (j+1! =n-1) && (t [i] [j+1]! ='\0'))

{

l++;

c [l] =j+1;

}

}

if ( (punct (t [i] [j-1]) ==0) && (t [i] [j] =='\0'))

d [l] =j-1;

}

for (k=0; k<l; k++)

for (s=1; s<=l-k; s++)

{

if (a [k] <=a [k+s])

{

x=a [k];

a [k] =a [k+s];

a [k+s] =x;

y=c [k];

c [k] =c [k+s];

c [k+s] =y;

z=d [k];

d [k] =d [k+s];

d [k+s] =z;

}

}

for (k=0; k<=l; k++)

{

for (s=c [k]; s<=d [k]; s++,q++)

r [i] [q] =t [i] [s];

r [i] [q] =' ';

q++;

}

}

for (i=1; i<m; i=i+2)

for (j=0; j<n-1; j++)

r [i] [j] =t [i] [j];

return (r);

}

int punct (char symb)

{

char punSymbls [30] = ",.! @#$%^&* () _-+= [] \"№:? /|\; '<>";

int i = 0;

int isSymb = 0;

while ( (punSymbls [i]) && (isSymb == 0))

{

if (symb == punSymbls [i])

isSymb = 1;

i++;

}

return isSymb;

}

char** mallok (int n, int m)

{

int i,j;

char **y;

y= (char**) malloc (n*sizeof (char));

for (i=0; i<n; i++)

* (y+i) = (char*) malloc (m*sizeof (char));

return (y);

}

char** probel (char** r, int n, int m)

{

int i,j;

for (i=0; i<m; i++)

for (j=0; j<n-1; j++)

r [i] [j] =' ';

return (r);

}

char** fre (char** t, int m)

{

if (t! =NULL)

{

for (int i = 0; i<m; i++)

free (* (t+i));

free (t);

}

return NULL;

}

void print (char **r, int n, int m)

{

int i,j;

printf ("\n");

for (i=1; i<m; i++)

{

printf ("\n");

for (j=0; j<n-1; j++)

printf ("%c",r [i] [j]);

}

printf ("\n");

}

void Help ()

{

system ("cls");

puts ("\n\n Данная программа предназначена для формирования нового текста, который");

puts (" является результатом следующего преобразования исходного текста: ");

puts ("в четных строках расположить слова в порядке убывания по численности в них гласных букв. ");

puts ("\n Ввод текста пользователем заканчивается после ввода символа “@”,");

system ("pause");

}

6. Инструкция пользователю

Для того чтобы ввести текст необходимо выбрать 1-ый пункт меню.

Текст может содержать произвольное количество строк.

Для перехода на следующую строку необходимо нажать клавишу "Enter".

Для прекращения ввода текста необходимо ввести символ “@”.

Если необходимы пустые строки в тексте, то необходимо использовать один раз клавишу "Enter" и один раз клавишу "Пробел" на каждой пустой строке.

Для вывода исходного текста на экран необходимо выбрать 2-ой пункт меню.

Для того чтобы обработать исходный текст, необходимо выбрать 3-ий пункт меню.

Для вывода нового текста на экран необходимо выбрать 4-ый пункт меню.

Для выхода необходимо выбрать 5-ой пункт меню

7. Набор тестов

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

Тест 1. Проверка правильности работы всей программы.

Вводим контрольные примеры из таблицы 1, и получаем результаты, совпадающие с ожидаемыми значениями из таблицы.

Тест 2. Проверка правильности работы функции вывода.

Пытаемся вывести исходный текст на экран, выбрав пункт 3, не введя текст, получаем сообщение "Сначала необходимо ввести текст".

Тест 3. Попытаемся вывести сформированный текст, введя исходный, но, предварительно не выбрав 3-ий пункт обработки, получаем сообщение "Вы ввели текст, но не обработали его".

Тест 4. Проверка правильности работы функции формирования нового текста.

Пытаемся сформировать текст, не введя исходный, и получаем сообщение

"Сначала необходимо ввести текст".

Результаты решения задачи:

При выполнении программы были получены результаты, совпадающие со значениями, приведенными в Таблице 1. Также были проведены тесты из 9 п. Набор тестов. Ошибок не обнаружено.

алгоритм программа символьная строка

Вывод

При выполнении курсовой работы были получены практические навыки работы с символьными строками, указателями, функциями, динамической памятью на языке программирования "С/C++".

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [1,9 M], добавлен 17.07.2014

  • Символьные типы данных, работа со строками, составление блок-схемы алгоритма и программы для работы с массивами. Организация программы с использованием процедур и функций. Процедуры и функции, использующиеся при обработке файлов; компонентные файлы.

    контрольная работа [52,9 K], добавлен 03.10.2010

  • Разработка программы обработки числовых последовательностей с кодом на языке Pascal. Функции ввода пользователем с клавиатуры последовательности целых чисел. Алгоритмы разработанных процедур и функций. Инструкция пользователя, листинг программы.

    курсовая работа [677,7 K], добавлен 13.07.2010

  • Изучение определения, описания и вызова функций, указателей и ссылок на них. Написание функции умножения произвольного столбца двумерного массива на const. Умножение 2 столбцов массива на константы. Составление блок-схемы алгоритма и текста программы.

    лабораторная работа [182,3 K], добавлен 09.01.2012

  • Описание функций, использующихся в программах. Основы 32-битного программирования на языке Assembler для ОС WINDOWS. Использование функции invoke, которая позволяет намного сократить текст программы и делает приложения похожими на программы для "ЯВы".

    курсовая работа [252,6 K], добавлен 20.02.2015

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

    курсовая работа [305,9 K], добавлен 03.07.2011

  • Техническое задание и блок-схема алгоритма программы построения графиков функций. Инструкция по инсталляции и описание работы программного продукта GRAPHIC. Инструкция оператору и ограничения данной версии программы. Программный код приложения.

    курсовая работа [391,2 K], добавлен 05.12.2009

  • Описание использованного набора макросредств. Список использованных констант и структур. Основы вызова API-функций. Основы программирования на 32-битном ассемблере. Формирование объектного кода, содержащего текст исходной программы в машинном виде.

    курсовая работа [150,4 K], добавлен 18.05.2014

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

    курсовая работа [352,8 K], добавлен 14.04.2011

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Разработка алгоритма и программы, обеспечивающей вычисление максимального значения функции на заданном отрезке, первой производной заданной функции. Методика расчёта, алгоритм решения задачи, описание программы. Результаты расчётов и графики функций.

    курсовая работа [576,6 K], добавлен 17.05.2011

  • Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.

    курсовая работа [1,5 M], добавлен 17.03.2014

  • Осуществление работы разрабатываемой программы на основе алгоритма, использующего Z-буфер. Аналитическое описание программной реализации. Алгоритмы основных функций программы. Содержание руководства пользователя. Файлы программы, пункты главного меню.

    курсовая работа [1,7 M], добавлен 15.04.2015

  • Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой.

    курсовая работа [69,8 K], добавлен 13.02.2012

  • Описание информационной структуры, используемой для организации списка. Контрольные примеры обработки и сортировки. Краткое описание алгоритма. Локальные переменные функции. Иерархическая структура программы, а также код программы на языке С/С++.

    курсовая работа [91,4 K], добавлен 16.07.2013

  • Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.

    курсовая работа [1,4 M], добавлен 16.03.2012

  • Анализ и описание алгоритма. Основные характеристики выбранного компьютера, программных сред (операционная система и среда программирования). Описание компонентов и интерфейса программы, а также модулей, процедур и функций. Вызов и загрузка программы.

    курсовая работа [1,3 M], добавлен 26.04.2015

  • Практическое использование алгоритмов для нахождения минимального пути в лабиринте. Разработка программы на языке С++ и в среде Visual C++. Основные способы поиска пути: метод волны и приоритетов. Описание разработанных функций и инструкция пользователя.

    дипломная работа [54,3 K], добавлен 16.03.2012

  • Создание приложения для шифрования–дешифрования текста тремя алгоритмами (алгоритм "Цезаря","Модифицированного Цезаря", "Скитала"). Исходный текст компонента. Инструкция пользователя, возможность просмотра примерного алгоритма. Исходный текст программы.

    курсовая работа [2,8 M], добавлен 27.02.2015

  • Заголовки процедур и функций, их основные параметры. Работа с массивами и строками в среде разработки Borland Delphi. Основное назначение процедурных типов, правила их объявления. Механизм передачи процедур в качестве фактических параметров вызова.

    курсовая работа [27,9 K], добавлен 18.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.