Главная страница
Навигация по странице:

  • Курсовая работа по дисциплине "Программирование"

  • Основные требования к программе

  • Постановка задачи и описание решения Сначала необходимо считать текст, либо с файла, либо с консоли,реализуем это двумя функциями и назовем их reading_from_a_file

  • 2) Функция reading_from_a_file(char txt[MAXLEN][MAXLEN],int kol_strok)

  • 5) Функция file_output(char end_text[MAXLEN][MAXLEN],int kol_strok)

  • 6) Функция required_form(char text[MAXLEN][MAXLEN],char word1[MAXLEN],char word2[MAXLEN],int kol_strok)

  • 8) Функция concatenation(char *str, char c)

  • Контрольные примеры Пример 1: Исходные данные: Чтение из файла

  • Пример 2: Ввод с консоли : rytuhon vihok,nut,ver gityum,dom,asx,wef. Gu dom, gjhb,zawer gityn face ides wertyz vytosЗаданное слово для поиска

  • Примеры выполнения программы 1 пример : Заданное слово для поиска Заданное слово для замены Исходный файл и полученный файл после работы программы2 пример

  • Заданное слово для поиска Заданное слово для замены 30 Исходный текст и полученный текст после работы программыЗаключение

  • Обработка текстовой информации


    Скачать 231.86 Kb.
    НазваниеОбработка текстовой информации
    Дата19.02.2022
    Размер231.86 Kb.
    Формат файлаpdf
    Имя файла1305Rakhmatulin-coursework.pdf
    ТипКурсовая
    #366763

    МИНОБРНАУКИ РОССИИ
    САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
    ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
    «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
    Кафедра Вычислительной техники
    Курсовая работа
    по дисциплине "Программирование"
    Тема: Обработка текстовой информации
    Студент гр. 1305
    Рахматулин М.М.
    Преподаватель
    Хахаев И.А.
    Санкт-Петербург
    2021

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

    систематическое использование функций как средства абстракции и структуризации;

    способ передачи данных между функциями – через параметры;

    использование рекомендуемых правил оформления кода;

    наличие комментариев для ключевых фрагментов программы, заголовочных комментариев функций (внешние спецификации);

    сочетание консоли и файлов для организации ввода исходных данных и вывода результатов;

    обоснование проектных решений, в т.ч. с точки зрения эффективности разработанных алгоритмов;

    формирование в ходе работы программы выходных данных, демонстрирующих как результат её работы, так и порождаемый ею вычислительный процесс.
    Постановка задачи и описание решения
    Сначала необходимо считать текст, либо с файла, либо с консоли,
    реализуем это двумя функциями и назовем их reading_from_a_file и
    reading_from_the_console. После того, как считан текст и пользователь ввёл 2
    заданных слова, одно из которых мы будем искать, а на другое заменять первое слово в строке, если там есть заданное слово. Обработку текста также
    2
    реализуем в виде функции, она будет называться required_form. В процессе нам также потребуются функции menu . Это меню выбора действий. Также есть еще функция concatenation. Она помогает нам складывать строку и символ. А функция first_word делает всю основную работу. Она заменяет первый элемент , если это необходимо, также заполняет end_text, то есть копирует необходимые строки из начального в конечный. После обработки текста необходимо вывести результирующий текст, либо в консоль, либо в файл, вывод также реализуем в виде функций, file_output и console_output. В
    программе также необходимо реализовать выбор для пользователя. Для этого мы используем функцию menu. Будем делать так, считываем user_selection и в зависимости от его значения необходимо сделать нужное действие. Так, при значении 1 – считываем текст, 2 – считываем заданное слово, которое мы будем искать в строках , 3 – считываем заданное слово, на которое будем заменять, 4
    – запускаем основной алгоритм работы над текстом, 5 – вывод полученного текста в процессе преобразования исходной строки, 6 – выход.
    Описание функций :
    1)reading_from_a_file . Необходимо создать файл, он будет называться input.txt, после открытия файла на чтение, считываем текст построчно до конца файла, каждый раз к величине kol_strok прибавляем 1, в результате получаем исходный текст, а также количество строк .
    2)reading_from_the_console . Так как неизвестно количество строк, то для определения конца текста пользователь должен ввести символ ‘!’. Считываем текст построчно, каждый раз проверяя, является ли последний текст в последней строке символом ‘!’, также после каждого считывания увеличиваем kol_strok на 1, в результате получаем исходный текст и количество строк kol_strok .
    3) menu . Функция выводит варианты работы для пользователя. При значении 1
    – считываем текст, 2 – считываем заданное слово, которое мы будем искать в строках , 3 – считываем заданное слово, на которое будем заменять, 4 –
    3
    запускаем основной алгоритм работы над текстом, 5 – вывод полученного текста в процессе преобразования исходной строки, 6 – выход.
    4) file_output. Функция записывает текст в файл, для этого необходимо сначала открыть файл output.txt на запись, после этого каждую строку, используя цикл от 0 до kol_strok записать в файл.
    5) console_output. Функция выводит текст в консоль, для этого, используя цикл от 0 до kol_strok выводим каждую строку.
    6) required_form. Функция, которая смотрит, если ли вхождение заданной строки для поиска в нашей строке, и если есть запускает функцию
    first_word
    7) first_word. Это функция формирования нового текста. Если у нас в начале есть пробелы или знаки препинания, то она спокойна сохраняет их уже в новой строке, далее если мы наткнулись на символ, который является буквой мы смотрим, встречались ли нам раньше буквы, если нет. Если буквы нам еще не встречались, тогда мы спокойно будем записывать эти буквы в наш новый текст, а когда теперь наткнемся на знак препинания или пробел , тогда мы наш условный знак( flag) делаем единицей. Далее добавляем в строку result строку word и делаем строку word_tmp пустой. А далее начинаем просто через функцию concatenation присоединять символы из исходного текста в конечный
    8)
    concatenation. Присоединять символы из исходного текста в конечный
    4

    Описание переменных
    1) Функция main()

    Имя переменно
    Тип
    Назначение
    1
    i, j int
    Счетчики в цикле
    2
    source_text char
    Исходный текст
    3
    end_text char
    Конечный текст
    4
    desired_word char
    Заданное слово,
    которое мы ищем
    5
    specified_word char
    Заданное слово, на которое мы заменяем
    6
    user_selection char
    Выбор пользователя
    7
    kol_strok int
    Количество строк
    2) Функция reading_from_a_file(char txt[MAXLEN][MAXLEN],int
    kol_strok)

    Имя переменно
    Тип
    Назначение
    1
    *text
    FILE
    Файл, в который мы будем записывать
    5
    текст
    3) Функция reading_from_the_console(char source_text[MAXLEN]
    [MAXLEN], int kol_strok);
    4) Функция console_output(char end_text[MAXLEN][MAXLEN],int
    kol_strok)

    Имя переменно
    Тип
    Назначение
    1
    i int
    Счетчики в цикле
    5) Функция file_output(char end_text[MAXLEN][MAXLEN],int kol_strok)

    Имя переменно
    Тип
    Назначение
    1
    i int
    Счетчики в цикле
    1
    *text
    FILE
    Файл, в который мы будем записывать текст
    6) Функция required_form(char text[MAXLEN][MAXLEN],char
    word1[MAXLEN],char word2[MAXLEN],int kol_strok)

    Имя переменно
    Тип
    Назначение
    1
    i int
    Счетчики в цикле
    7) Функция first_word(char string[MAXLEN],char word[MAXLEN])

    Имя переменно
    Тип
    Назначение
    1
    word_tmp char
    Первое слово в строке
    2
    result char
    Строка, которая у нас получается в
    результате работы функции
    3
    word_length_tmp int
    Длина первого слова в строке
    4
    flag int
    Ограничитель в
    программе (отвечает
    6
    за выполнение тех или иных условий в if)
    5
    j int
    Счетчик в цикле
    8) Функция concatenation(char *str, char c)

    Имя переменно
    Тип
    Назначение
    1
    tmpstr char
    Строка, с помощью которой мы будем склеивать символы в строку str
    Схема алгоритма
    MAXLEN := 256
    функц ввод с консоли()
    функц ввод с файла()
    функц вывод с файла()
    функц вывод с консоли()
    функц замена первого слова()
    функц приеведение к необходимому виду() функц сложение строки и символа()
    функц меню()
    алг замена_слова нач kol_strok := 0
    flag := 0
    desired_word[0] := конец строки specified_word[0] := конец строки source_text[0][0] := конец строки end_text[0][0] := конец строки вывод "This program replaces the first word of the string if it has a given word"
    вывод "Press ENTER to continue"
    7
    ввод enter очистка экрана вызов menu пока (user_selection <> '6')
    ввод user_selection если (user_selection == '1')
    то нц для i от 0 до kol_strok нц для j от 0 до длины строки source_text source_text[i][j] := конец строки кц кц kol_strok := 0
    очистка экрана вывод " 1 - Reading from the console\n 2 - Reading from a file"
    user_selection[0]='0'
    нц пока ((user_selection[0] <> '1') и (user_selection[0] <> '2'))
    ввод user_selection если (user_selection[0] == '1')
    то очистка экрана kol_strok := reading_from_the_console(source_text,kol_strok)
    все если (user_selection[0] == '2')
    то очистка экрана kol_strok := reading_from_a_file(source_text,kol_strok)
    все если ((user_selection[0] <> '1') и (user_selection[0] <> '2'))
    то
    8
    очистка экрана вывод "ERROR!\nPlease try again\nPress ENTER to continue"
    ввод enter очистка экрана вывод " 1 - Reading from the console\n 2 - Reading from a file"
    все кц user_selection[0] := '1'
    вывод "Press ENTER to continue"
    ввод enter очистка экрана вызов menu()
    все если (user_selection[0] == '2')
    то очистка экрана вывод "Enter the desired given word :"
    ввод desired_word вывод "Press ENTER to continue"
    ввод enter очистка экрана вызов menu()
    все если (user_selection[0] == '3')
    то очистка экрана вывод "Enter the word with which we will replace :"
    ввод specified_word вывод "Press ENTER to continue"
    9
    ввод enter очистка экрана вызов menu()
    все если (user_selection[0] == '4')
    то если ((desired_word[0] <> конец строки) и (source_text[0][0] <>
    конец строки))
    то очистка экрана вызов required_form(source_text, desired_word,specified_word,
    kol_strok)
    вывод "Process completed successfully!\nPress ENTER to continue"
    ввод enter очистка экрана вызов menu()
    все иначе очистка экрана вывод "ERROR!\nEnter the source text, as well as the required set words, and try again\nPress ENTER to continue"
    ввод enter очистка экрана вызов menu()
    все все
    10
    если ((user_selection[0] <> '1') и (user_selection[0] <> '2') и
    (user_selection[0] <> '3') и (user_selection[0] <> '4') и (user_selection[0] <> '5') и
    (user_selection[0] <> '6'))
    то вывод "ERROR!\nIt seems you made a mistake with the number, try to select one of the listed commands again\nPress ENTER to continue"
    ввод enter очистка экрана вызов menu() все если (user_selection[0] == '5')
    то если (source_text <> конец строки)
    то очиста экрана вывод "1 - Output the result in the console\n 2 - Output the result in a file"
    user_selection[0] := '0'
    нц пока ((user_selection[0] <> '1') и (user_selection[0] <> '2'))
    ввод user_selection если ((user_selection[0] <> '1') и (user_selection[0] <> '2'))
    то очиста экрана вывод "Something wrong, try again\nPress ENTER to continue"
    ввод enter очистка экрана вызов menu()
    11
    вывод " 1 - Output the result in the console\n 2 - Output the result in a file"
    все если (user_selection[0] == '1')
    то очиста экрана вызов console_output(source_text,kol_strok)
    вывод "The withdrawal was successful! Please accept my congratulations!"
    все если (user_selection[0] == '2')
    то очиста экрана вызов file_output(source_text,kol_strok)
    вывод "The withdrawal was successful! Please accept my congratulations!"
    все кц все иначе вывод "Before making a conclusion, you need to make transformations on the text"
    все user_selection[0] == '4'
    вывод "Press ENTER to continue"
    ввод enter очистка экрана вызов menu()
    все
    12
    кц очистка экрана вывод "Thank you for your work!\n"
    вернуть 0
    кон функция меню()
    нач вывод "Menu:\n 1 - Input your text\n 2 - Entering the search word\n 3 -
    Enter the word to replace the first word in the line with\n 4 - Start \n 5 - Output\n 6 -
    Exit" кон функция ввод с консоли(сим source_text[MAXLEN][MAXLEN], цел kol_strok)
    нач вывод "Enter the text. To end the input, enter the character '!' :"
    нц пока (source_text[kol_strok-1][длина строки(source_text[kol_strok-1])-
    2] <> '!')
    ввод source_text[kol_strok]
    kol_strok := kol_strok + 1
    кц source_text[kol_strok-1][длина строки(source_text[kol_strok-1])-2] :=
    конец строки вернуть kol_strok кон функция ввод с файла(сим source_text[MAXLEN][MAXLEN], цел kol_strok)
    13
    нач если ((text = открываем файл("input.txt","r+")) не пустой)
    то нц пока не конец файла если считанная строка из файла не пустая то kol_strok := kol_strok + 1
    если (kol_strok == 1)
    то вывод "File read successfully!"
    все все иначе вывод сообщения об ошибке "Opening error!"
    все кц если при закрытии файла text возвращается значение EOF
    то вывод сообщения об ошибке "Closing error!"
    все все иначе вывод сообщения об ошибке "Opening error!"
    все вернуть kol_strok кон функция вывод с файла(сим end_text[MAXLEN][MAXLEN], цел kol_strok)
    14
    нач если ((text = открываем файл("Output.txt","w")) не пустой)
    то нц для i от 0 до kol_strok вывод end_text[i] в text кц если при закрытии файла text возвращается значение EOF
    то вывод сообщения об ошибке "Closing error!"
    все все иначе вывод сообщения об ошибке "Opening error!"
    все кон функц вывод с консоли(сим end_text[MAXLEN][MAXLEN], цел kol_strok)
    нач нц для i от 0 до kol_strok вывод end_text[i]
    кц переход на новую строку кон функция приведение к необходимому виду(сим text[MAXLEN]
    [MAXLEN]сим word1[MAXLEN],сим word2[MAXLEN],цел kol_strok)
    нач word1[длина строки(word1)-1] := конец строки word2[длина строки(word2)-1] := конец строки
    15
    нц для i от 0 до kol_strok если строка word1 содержится в text[i]
    то вызов first_word(text[i],word2)
    все кц кон функция замена первого слова(сим string[MAXLEN],сим word[MAXLEN])
    нач word_tmp[MAXLEN] := конец строки result[MAXLEN] := конец строки j := 0
    flag := 0
    word_length_tmp := 0
    нц пока (j <= длине строки string)
    если (string[j] == ' ') или знаку препинания то если (длина сторки word_tmp <> 0)
    то flag := 1
    добавляем в строку result строку word делаем строку word_tmp пустой все иначе вызов concatenation(result,string[j])
    j := j + 1
    все
    16
    все иначе если ( flag == 0)
    то word_tmp[word_length_tmp] := string[j]
    word_length_tmp := word_length_tmp + 1
    j := j + 1
    все иначе вызов concatenation(result,string[j])
    j := j + 1
    все все кц копируем данные из строки result в строку string кон функция сложение строки и символа(сим *str, сим c)
    нач tmpstr[0] := c tmpstr[1] := 0
    добавляем в строку str сторку tmpstr кон
    17

    Контрольные примеры
    Пример 1:
    Исходные данные:
    Чтение из файла : qwert, hkjgjfjvnbf,nmjk ? tyk rtngh, gjh, top fjgnrr r h wrg top gjhb fgjh fgnbf wefdg S
    fgh top
    Заданное слово для поиска : top
    Заданное слово для замены : mart
    Вывод в файле :
    qwert, hkjgjfjvnbf,nmjk ? tyk mart, gjh, top fjgnrr r h wrg mart gjhb fgjh fgnbf wefdg S
    mart top
    Пример 2:
    Ввод с консоли :
    rytuhon vihok,nut,ver gityum,dom,asx,wef. Gu dom, gjhb,zawer gityn face ides wertyz vytos
    Заданное слово для поиска : dom
    Заданное слово для замены : maskit
    Конечный результат( в консоли) :
    18
    rytuhon vihok,nut,ver maska,dom,asx,wef. Gu maska, gjhb,zawer gityn face ides wertyz vytos!
    Текст программы
    #include
    #include
    #include
    #include
    #define MAXLEN 256
    #define CLS system("cls") /*for windows*/
    /*#define CLS system("clear")*/ /*for other*/
    int reading_from_a_file(char txt[MAXLEN][MAXLEN],int kol_strok); /*
    Reading text from file */
    /* Reading text from console */
    void menu(); /* Shows menu */
    /* Write the result into file */
    /* Write the result into console */
    int reading_from_the_console(char source_text[MAXLEN][MAXLEN], int kol_strok);
    void required_form(char text[MAXLEN][MAXLEN],char word1[MAXLEN],char word2[MAXLEN],int kol_strok);
    void console_output(char end_text[MAXLEN][MAXLEN],int kol_strok);
    void file_output(char end_text[MAXLEN][MAXLEN],int kol_strok);
    void first_word(char string[MAXLEN],char word[MAXLEN]);
    void concatenation(char *str, char c);
    void menu()
    {
    19
    puts("Menu:\n 1 - Input your text\n 2 - Entering the search word\n 3 - Enter the word to replace the first word in the line with\n 4 - Start \n 5 - Output\n 6 - Exit");
    }
    int main()
    {
    char source_text[MAXLEN][MAXLEN],end_text[MAXLEN][MAXLEN];
    char desired_word[MAXLEN], specified_word[MAXLEN];
    char user_selection[3];
    int i,j;
    int kol_strok = 0;
    desired_word[0] = '\0';
    specified_word[0] = '\0';
    source_text[0][0] = '\0';
    end_text[0][0] = '\0';
    puts("This program replaces the first word of the string if it has a given word");
    puts("Press ENTER to continue");
    getchar();
    CLS;
    menu();
    while (user_selection[0] != '6') /* Selection menu */
    {
    fgets(user_selection,3,stdin);
    if (user_selection[0] == '1') /* Entering text */
    {
    for (i=0;i {
    for (j=0;j source_text[i][j] = '\0';}
    20

    }
    kol_strok = 0;
    CLS;
    puts(" 1 - Reading from the console\n 2 - Reading from a file");
    user_selection[0] = '0';
    while ((user_selection[0] != '1') && (user_selection[0] != '2'))
    {
    fgets(user_selection,3,stdin);
    if (user_selection[0] == '1')
    {
    CLS;
    kol_strok = reading_from_the_console(source_text,kol_strok);
    }
    if (user_selection[0] == '2')
    {
    CLS;
    kol_strok = reading_from_a_file(source_text,kol_strok);
    }
    if ((user_selection[0] != '1') && (user_selection[0] != '2'))
    {
    CLS;
    puts("ERROR!\nPlease try again\nPress ENTER to continue");
    getchar();
    CLS;
    puts(" 1 - Reading from the console\n 2 - Reading from a file");
    }
    }
    user_selection[0] = '1';
    21
    puts("Press ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    if (user_selection[0] == '2') /* Entering word */
    {
    CLS;
    puts("Enter the desired given word :");
    fgets(desired_word,MAXLEN,stdin);
    puts("Press ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    if (user_selection[0] == '3') /* Entering word */
    {
    CLS;
    puts("Enter the word with which we will replace :");
    fgets(specified_word,MAXLEN,stdin);
    puts("Press ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    if (user_selection[0] == '4') /* Process start */
    {
    if ((desired_word[0] != '\0') && (source_text[0][0] != '\0'))
    {
    22

    CLS;
    required_form(source_text, desired_word,specified_word,
    kol_strok);
    puts("Process completed successfully!\nPress ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    else
    {
    CLS;
    puts("ERROR!\nEnter the source text, as well as the required set words, and try again\nPress ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    }
    if ((user_selection[0] != '1') && (user_selection[0] != '2') &&
    (user_selection[0] != '3') && (user_selection[0] != '4') && (user_selection[0] != '5')
    && (user_selection[0] != '6')) /* Checking the correctness of the entered data */
    {
    printf("ERROR!\nIt seems you made a mistake with the number, try to select one of the listed commands again\nPress ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    if (user_selection[0] == '5') /* Outputting the result */
    23

    {
    if (source_text != '\0')
    {
    CLS;
    puts("1 - Output the result in the console\n 2 - Output the result in a file");
    user_selection[0] = '0';
    while ((user_selection[0] != '1') && (user_selection[0] != '2'))
    {
    fgets(user_selection,3,stdin);
    if ((user_selection[0] != '1') && (user_selection[0] != '2'))
    {
    CLS;
    puts("Something wrong, try again\nPress ENTER to continue");
    getchar();
    CLS;
    puts(" 1 - Output the result in the console\n 2 - Output the result in a file");
    }
    if (user_selection[0] == '1')
    {
    CLS;
    console_output(source_text,kol_strok);
    puts("The withdrawal was successful! Please accept my congratulations!");
    }
    if (user_selection[0] == '2')
    {
    CLS;
    24
    file_output(source_text,kol_strok);
    puts("The withdrawal was successful! Please accept my congratulations!");
    }
    }
    }
    else
    {
    puts("Before making a conclusion, you need to make transformations on the text");
    }
    user_selection[0] = '4';
    puts("Press ENTER to continue");
    getchar();
    CLS;
    menu();
    }
    }
    CLS;
    puts("Thank you for your work!\n");
    return 0;
    }
    int reading_from_the_console(char source_text[MAXLEN][MAXLEN], int kol_strok)
    {
    puts("Enter the text. To end the input, enter the character '!' :");
    while (source_text[kol_strok-1][strlen(source_text[kol_strok-1])-2] != '!')
    {
    fgets(source_text[kol_strok],MAXLEN,stdin);
    25
    kol_strok += 1;
    }
    source_text[kol_strok-1][strlen(source_text[kol_strok-1])-2] = '\0';
    return kol_strok;
    }
    int reading_from_a_file(char source_text[MAXLEN][MAXLEN], int kol_strok)
    {
    FILE* text;
    if ((text = fopen("input.txt","r+")) != NULL)
    {
    while(!feof(text))
    {
    if ((fgets(source_text[kol_strok],MAXLEN,text)) != NULL)
    {
    kol_strok += 1;
    if (kol_strok == 1)
    {
    puts("We have successfully read the text from the file!");
    }
    }
    else perror("Opening error!");
    }
    if(fclose(text)==EOF) perror("Closing error!");
    }
    else perror("Opening error!");
    return kol_strok;
    }
    26
    void file_output(char end_text[MAXLEN][MAXLEN],int kol_strok)
    {
    FILE *text;
    int i;
    if ((text = fopen("Output.txt","w")) != NULL)
    {
    for (i=0;i {
    fputs(end_text[i],text);
    }
    if(fclose(text)==EOF) perror("Closing error!");
    }
    else perror("Opening error!");
    }
    void console_output(char end_text[MAXLEN][MAXLEN],int kol_strok)
    {
    int i;
    for (i=0;i {
    printf("%s",end_text[i]);
    }
    printf("\n");
    }
    void required_form(char text[MAXLEN][MAXLEN],char word1[MAXLEN],char word2[MAXLEN],int kol_strok){
    int i;
    word1[strlen(word1) - 1] = '\0';
    27
    word2[strlen(word2) - 1] = '\0';
    for (i = 0;i {
    if (strstr(text[i],word1) != NULL)
    {
    first_word(text[i],word2);
    }
    }
    }
    void first_word(char string[MAXLEN],char word[MAXLEN])
    {
    char word_tmp[MAXLEN] = "\0",result[MAXLEN] = "\0";
    int word_length_tmp,j,flag;
    j = 0;
    flag = 0;
    word_length_tmp = 0;
    while (j <=strlen(string))
    {
    if ((string[j] == ' ') || ispunct(string[j]))
    {
    if (strlen(word_tmp) != 0)
    {
    flag = 1;
    strcat(result,word);
    memset(word_tmp,0,sizeof(word_tmp));
    }
    else
    {
    concatenation(result,string[j]);
    28
    j += 1;
    }
    }
    else
    {
    if (flag == 0)
    {
    word_tmp[word_length_tmp] = string[j];
    word_length_tmp += 1;
    j += 1;
    }
    else
    {
    concatenation(result,string[j]);
    j += 1;
    }
    }
    }
    strcpy(string,result);
    }
    void concatenation(char *str, char c)
    {
    char tmpstr[2];
    tmpstr[0] = c;
    tmpstr[1] = 0;
    strcat(str,tmpstr);
    }
    29

    Примеры выполнения программы
    1 пример :
    Заданное слово для поиска Заданное слово для замены
    Исходный файл и полученный файл после работы программы
    2 пример :
    Заданное слово для поиска Заданное слово для замены
    30

    Исходный текст и полученный текст после работы программы
    Заключение
    В процессе решения задачи было использовано 4 заголовочных файла:
    1) Из stdio.h использованы функции : printf, puts, fputs, fopen, fgets, fclose,
    getchar, feof, perror для вывода и ввода информации.
    2) Из string.h использованы функци strlen, strcpy для обработки строк.
    3) Из stdlib.h мы использовали функцию system для работы с терминалом.
    4) Из ctype.h мы использовали функцию ispunct для работы с символами.
    В результаты выполнения работы поэтапно решена содержательная задача, изучены алгоритмы с обработкой текстовой информации, а также получены практические навыки в создании программ с ней на данном языке программирования.
    31


    написать администратору сайта