Работа с текстом

Автор работы: Пользователь скрыл имя, 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

Содержимое работы - 1 файл

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

— 854.95 Кб (Скачать файл)

              *(t1+j) = '\0';

              j = 0;

              while(*(t1+j) != '\0')   //пока не конец строки

                    {

                      if(*(t1+j) == ' '||*(t1+j) == '.'||*(t1+j) == ','||*(t1+j) == '!'||

                      *(t1+j) == '?'||*(t1+j) == ':'||*(t1+j) == ';')          //если разделитель

                            {

                              t2 =(char*)realloc(t2, (q+1)*sizeof(char));  //выделение памяти для

                                                                                              новой строки посимвольно

                              *(t2+q) = *(t1+j);                                //копирование разделителей

                              j ++;

                              q ++;

                            }

                      else

                            {

                              s = 0;

                              y = 0;                                                                        //обнуление флажка

                              while((*(t1+j) != ' ')&&(*(t1+j) != '\0')&&(*(t1+j) != '.')&&

                                        (*(t1+j) != ',')&&(*(t1+j) != '!')&&(*(t1+j) != '?')&&

                                        (*(t1+j) != ':')&&(*(t1+j) != ';'))   

                                                                                                              //пока не конец слова

                                    {

                                      if(*(t1+j) >= '0' && *(t1+j) <= '9')

                                                                                             //если символ является цифрой

                                            {

                                              y = 1;                //флажок

                                            }

                                      j ++;

                                      s ++;

                                    }

                              if(y == 1)      //если в слове есть цифра

                                    {

                                      for(e = 0; e < strlen(slovo); e ++)  

                                                                //копирование введённого слова в новую строку

                                            {

                                              t2 =(char*)realloc(t2, (q+1)*sizeof(char));

                                              *(t2+q) = *(slovo+e);

                                              q ++;

                                            }

                                    }

                              else

                                    {

                                      j = j - s;         //смещение  указателя

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

                                                                     //копирование слова, не содержащего цифры

                                            {

                                              t2 =(char*)realloc(t2, (q+1)*sizeof(char));

                                              *(t2+q) = *(t1+j);

                                              j ++;

                                              q ++;

                                            }

                                    }

                            }

                    }

              t2 =(char*)realloc(t2, (q+1)*sizeof(char));  

                                                                  //выделение памяти под признак конца строки

              *(t2+q) = '\0';

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

                                                                                  //выделение памяти под новый текст

              newtxt[i] = (char *) malloc((q+1)*sizeof(char));

              strcpy(newtxt[i], t2);  //копирование строки t2 в новый текст

              free(t1);   //освобождение памяти строки t1

              t1 = NULL;  //обнуление строки t1

              free(t2);   //освобождение памяти строки t2

              t2 = NULL;  //обнуление строки t2

            }

      return newtxt;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

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

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

Для перехода на следующую  строку используется клавиша ENTER.

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

Если необходимы пустые строки в тексте, то необходимо использовать один раз ENTER и один раз ПРОБЕЛ на каждой строке.

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

Для того, чтобы ввести слово, на которое будут заменяться слова, содержащие цифры, необходимо выбрать 3-ий пункт меню, ввод слова прекращается после нажатия клавиши ПРОБЕЛ. Ввести можно только одно слово.

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

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

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

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

 

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

 

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

 

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

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

 

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

Пытаемся  выполнить контрольный вывод  исходного текста, не введя исходный, и получаем предупреждение «Ошибка, введите первый пункт меню».

 

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

Пытаемся выполнить вывод  нового текста, не сформировав его, и получаем предупреждение «Новый текст  не был сформирован. Так как не был выбран 4-ый пункт меню».

 

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

Пытаемся сформировать текст, не введя слово для замены, и  получаем предупреждение «Ошибка, не было введено слово, выберите 3-ий пункт  меню».

 

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

Пытаемся  сформировать текст, не введя исходный, и получаем предупреждение «Ошибка, введите первый пункт меню».

 

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

Пытаемся  ввести несколько слов для замены, но после нажатия клавиши «пробел» ввод заканчивается.

 

 

 

 

  1. Результат выполнения программы

 

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

 

 

  1. Вывод

 

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

 

 

 

 

 


Информация о работе Работа с текстом