Автор работы: Пользователь скрыл имя, 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
*(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) != '.')&&
if(y == 1) //если в слове есть цифра
else
}
}
t2 =(char*)realloc(t2, (q+1)*sizeof(char));
*(t2+q) = '\0';
newtxt = (char **) realloc(newtxt,(i+1)*sizeof(
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-ый пункт меню.
Текст может содержать произвольно количество строк.
Для перехода на следующую строку используется клавиша ENTER.
Для прекращения ввода текста необходимо нажать два раза клавишу ENTER.
Если необходимы пустые строки в тексте, то необходимо использовать один раз ENTER и один раз ПРОБЕЛ на каждой строке.
Для вывода введённого текста на экран используется 2-ой пункт меню.
Для того, чтобы ввести слово, на которое будут заменяться слова, содержащие цифры, необходимо выбрать 3-ий пункт меню, ввод слова прекращается после нажатия клавиши ПРОБЕЛ. Ввести можно только одно слово.
Для замены слов, содержащие цифры, на введённое слово, необходимо использовать 4-ый пункт меню.
Для вывода нового текста необходимо использовать 5-ый пункт меню.
Для вызова справки необходимо использовать 6-ой пункт меню.
Для выхода необходимо использовать 7-ой пункт меню.
Проверка
программы выполняется с
Тест 1. Проверка правильности работы всей программы
Вводим контрольные примеры из таблицы 1, и получаем результаты, полностью совпадающие с ожидаемыми значениями из таблицы.
Тест 2. Проверка правильности работы функции вывода текста
Пытаемся выполнить контрольный вывод исходного текста, не введя исходный, и получаем предупреждение «Ошибка, введите первый пункт меню».
Тест 2. Проверка правильности работы функции вывода текста.
Пытаемся выполнить вывод нового текста, не сформировав его, и получаем предупреждение «Новый текст не был сформирован. Так как не был выбран 4-ый пункт меню».
Тест 3. Проверка правильности работы функции формирования нового текста
Пытаемся сформировать текст, не введя слово для замены, и получаем предупреждение «Ошибка, не было введено слово, выберите 3-ий пункт меню».
Тест 4. Проверка правильности работы функции формирования нового текста.
Пытаемся сформировать текст, не введя исходный, и получаем предупреждение «Ошибка, введите первый пункт меню».
Тест 5. Проверка правильности работы функции ввода слова
Пытаемся ввести несколько слов для замены, но после нажатия клавиши «пробел» ввод заканчивается.
При выполнении программы были получены результаты, совпадающие со значениями, приведенными в таблице 1. Ошибки не обнаружены.
При выполнении курсовой работы были получены практические навыки работы с символьными строками, указателями, функциями, динамически выделяемой памятью.