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

  • Тип возвращаемого значения: void

  • Тип возвращаемого значения

  • Назначение

  • 1)read(string outputString)

  • 8)Set()

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


    Скачать 0.57 Mb.
    НазваниеОбработка текстовой информации
    Дата30.11.2021
    Размер0.57 Mb.
    Формат файлаdocx
    Имя файлаКурсовой проект.docx
    ТипКурсовая
    #286796
    страница3 из 6
    1   2   3   4   5   6

    set()


    Назначение: функция, предназначенная для замены строки по индексу pos в массиве editStrung.

    Входные аргументы:

    Тип возвращаемого значения: void - функция ничего не возвращает
      1. saveStringInFile()


    Назначение: функция, предназначенная для сохранения строки в файл.

    Входные аргументы:

    • string fileName – имя файла, в который нужно сохранить;

    • string loadString – строка, которую нужно сохранить в файл.

    Тип возвращаемого значения: bool - функция возвращает значение типа bool. Если была ошибка при открытии файла, то вернётся false, иначе вернётся значение true.
      1. addStringsWithRequest()


    Назначение: функция, предназначенная для добавления строк. При этом данная функция запрашивает строки у пользователя.

    Входные аргументы:

    • string *editString – исходный массив, в котором будут проходить изменения;

    • int& lineCount – ссылка на размер массива. Ссылка нужна для того, чтобы была возможность изменить размер внутри данной функции;

    • int pos – индекс, с которого нужно вставлять строки.

    Тип возвращаемого значения: void - функция возвращает новый массив с вставленными строчками.
    1. Описание интерфейса пользователя


    После запуска программы перед пользователем появится меню, в котором будут следующие пункты:

    0 – выход из программы.

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

    2 - Вставить последовательность строк, заданных в команде, перед текущей строкой; Высвечивается запрос сколько строк вставить и какие. Пользователь вводит строки, они записываются перед текущей. затем происходит возврат в меню программы.

    3 - Удалить заданное число строк, начиная (заканчивая) текущей строкой; запрос сколько строк удалить. Удаление вместе с текущей. затем происходит возврат в меню программы.

    4 - Заменить текущую строку на строку, указанную в команде; пользователь вводит строку, которой надо заменить текущую. затем происходит возврат в меню программы.

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

    6 - Вывести на экран заданное число строк, начиная с текущей строки; запрос на количество выводимых на экран строк. затем происходит возврат в меню программы.

    7 - Записать текст в файл с именем, указанным в команде. Запрос имени нового файла. затем происходит возврат в меню программы.

    Меню представлено на рисунке 3.



    Рисунок 3
    1. Алгоритм программы


    Точка входа в программу: функция main. Разберем алгоритм, который реализован данной функцией.

    1. Открываем файл для чтения;

    2. Проходим весь файл, чтобы получить количество строк, для этого используем функцию getLineCount();

    3. Создаем массив с размером, который получили во втором пункте;

    4. С помощью функции read(file, arr) считываем из файла все строки в массив;

    5. Закрываем файл;

    6. С помощью функции readEditType() получаем значение меню, то есть действия, которые пользователь хочет выполнить со строками;

    7. Если пользователь вводит число 1, то вызывается функция addStringWithRequest(), в которую передается нынешнее положение + 1, чтобы последовательность строк была вставлена после текущей;

    8. Если пользователь вводит число 2, то вызывается функция addStringWithRequest(), в которую передается нынешнее положение, чтобы последовательность строк была вставлена перед текущей;

    9. Если пользователь вводит число 3, то у пользователя запрашивается количество строчек, которое нужно удалить, с помощью функции read(), затем создается новый массив, у которого размер меньше не то количество строк, которое хочет удалить пользователь, далее происходит сохранение в новый массив исходного массива с удалением строк, для этого используется функция deleteStrings(). Затем обновляем общий размер и исходный массив;

    10. Если пользователь вводит число 4, то мы запрашиваем строку, на которую пользователь хочет заменить, затем с помощью функции set() меняем значение строки;

    11. Если пользователь вводит число 5, то мы запрашиваем количество строк, на которое пользователь хочет перейти и меняем значение переменной pos;

    12. Если пользователь вводит число 6, то мы запрашиваем у пользователя число строк, которое он хочет вывести, затем с помощью функции printLines() получаем строку со всеми строками, которые нужно вывести и выводим их на экран;

    13. Если пользователь вводит число 7, то мы запрашиваем имя файла для сохранения, затем с помощью функции printLines() получаем все строки и затем с помощью функции saveStringInFile() сохраняем все строки в файл.

    14. Если пользователь ввел 0, то происходит выход из прогаммы.

    15. Если пользователь ввел любое другое число, то выводиться ошибка, что такой команды не найдено.

    1)read(string outputString):

    ВЫВОД message

    ПОКА (1)

    Начало

    Int n;

    ЕСЛИ (cin >> n)

    Return n;

    Cin.clear();

    ВЫВОД «Некорректный ввод. Введите заново:»;

    Конец.

    2)readEditType():

    ВЫВОД «Доступные команды:»

    ВЫВОД «0 - Выйти из программы;»

    ВЫВОД «1 - Вставить последовательность строк, заданных в команде, после текущей строки;»

    ВЫВОД «1 - Вставить последовательность строк, заданных в команде, перед текущей строкой;»

    ВЫВОД «3 - Удалить заданное число строк, начиная (заканчивая) текущей строкой;»

    ВЫВОД «4 - Заменить текущую строку на строку, указанную в команде;»

    ВЫВОД «5 - Перейти на заданное число строк вверх (вниз) относительно текущей строки;»

    ВЫВОД «6 - Вывести на экран заданное число строк, начиная с текущей строки;»

    ВЫВОД «7 - Записать текст в файл с именем, указанным в команде.»

    Return read («Введите номер команды, чтобы её выполнить: »).

    3)getLineCount():

    int I = 0;

    string line = «»;

    ПОКА (getline(fin, line))

    I++;

    fin.clear();

    fin.seekg(0);

    return i;

    4)read():

    string line;

    int i = 0;

    ПОКА (getline(fin, line))

    Начало

    *(arr + i) = line;

    i++;

    Конец

    fin.clear();

    fin.seekg(0);

    return arr;

    5)printLines():

    string stringOut = "";

    ЦИКЛ по i от 0 до lineCount, i++

    stringOut += *(arr + (lineStart + i)) + "\n";

    return stringOut;

    6)void addLines():

    int edit_array_pos = 0;

    ЦИКЛ по i от 0 до pos, i++

    Начало

    *(edit_array + edit_array_pos) = *(init_array + i);

    edit_array_pos += 1;

    конец

    ЦИКЛ по i от 0 до past_array_size; i++

    Начало

    *(edit_array + edit_array_pos) = *(paste_array + i);

    edit_array_pos += 1;

    Конец

    ЦИКЛ по i от pos до init_array_size; i++

    Начало

    *(edit_array + edit_array_pos) = *(init_array + i);

    edit_array_pos += 1;

    конец.

    7)deleteStrings():

    int new_array_pos = 0;

    ЕСЛИ (count_delete < 0)

    Начало

    size_t new_count_delete = 0;

    ЕСЛИ ((pos + count_delete) > 0)

    new_count_delete = pos + count_delete;

    ЦИКЛ по i от 0 до pos + count_delete; i++

    Начало

    *(edit_array + new_array_pos) = *(editString + i);

    new_array_pos++;

    Конец

    ЦИКЛ по i от pos до lineCount; i++

    Начало

    *(edit_array + new_array_pos) = *(editString + i);

    new_array_pos++;

    Конец

    Конец

    ИНАЧЕ

    Начало

    ЦИКЛ по i от 0 до pos; i++

    Начало

    *(edit_array + new_array_pos) = *(editString + i);

    new_array_pos++;

    Конец

    ЦИКЛ по i от pos + abs(count_delete) до lineCount; i++

    Начало

    *(edit_array + new_array_pos) = *(editString + i);

    new_array_pos++;

    Конец

    Конец.

    8)Set():

    *(editString + pos) = pastLines;

    9)saveStringInFile():

    bool isLoadGood = true;

    ofstream fout;

    fout.open(fileName);

    ЕСЛИ (!fout.is_open())

    isLoadGood = false;

    ИНАЧЕ

    fout << loadString;

    fout.close();

    return isLoadGood;

    10)addStringWithRequest():

    int countLines = read("Введите количество строк, которое хотите вставить: ");

    string* lines = new string[countLines];

    ВЫВОД «Введите строчки»

    ЦИКЛ по i от 0 до countLines; i++

    Начало

    string text;

    ЦИКЛ

    getline(cin, text);

    ПОКА (text == "");

    *(lines + i) = text;

    Конец

    string* new_arr = new string[lineCount + countLines];

    addLines(editString, lineCount, lines, countLines, new_arr, pos);

    lineCount += countLines;

    return new_arr.
    1. 1   2   3   4   5   6


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