Главная страница

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


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

// Вставить последовательность строк, заданных в команде, после

// текущей строки

case 1: {

int oldLineCount = lineCount;

editString = addStringWithRequest(editString, lineCount, pos + 1);
break;

}
// Если ползователь ввел "2", то нам требуется

// вставить последовательность строк,

// заданных в команде, перед текущей строкой;

case 2: {

int oldLineCount = lineCount;

editString = addStringWithRequest(editString, lineCount, pos);
// Так как мы добавляем до этой строчки, то нам нужно изменить позицию на которой мы находимся,

// чтобы оставаться на этой же строчке.

// P.S. Если ты проверяешь через 6 команду, то ты не увидишь эти изменения, так как выводиться с

// этой строчки (те вот эти придыдущие не выводятся)

pos += lineCount - oldLineCount;
break;

}
// Если ползователь ввел "3", то нам требуется

// удалить заданное число строк, начиная (заканчивая) текущей строкой

case 3: {

if (lineCount == 0) {

cout << "Нет данных для редакирования" << endl;

}

else {

int count_delete = read("Введите количество строк, которое хотите удалить (если ввести с -, то удаляться предыдущие строчки, если +, то следующие: ");
if ((pos + count_delete) < 0) count_delete = -(pos);
string* new_arr = new string[lineCount - abs(count_delete)];
deleteStrings(editString, lineCount, count_delete, pos, new_arr);

lineCount -= abs(count_delete);
editString = new_arr;
if (count_delete > 0) {

if (pos != 0) pos -= 1;

}

else pos -= abs(count_delete);
}
break;

}
// Если ползователь ввел "4", то нам требуется

// заменить текущую строку на строку, указанную в команде

case 4:

{

if (lineCount == 0) {

cout << "Нет данных для редакирования" << endl;

}

else {
cout << "На какую строчку вы хотите заменить?" << endl;

string pastLines = "";
do {

getline(cin, pastLines);

} while (pastLines == "");
set(editString, pos, pastLines);

}
break;

}

// Если ползователь ввел "5", то нам требуется

// перейти на заданное число строк вверх

// (вниз) относительно текущей строки;

case 5:

{

cout << "Введите количество строк, на которое хотите перейти (если ввести с -, то перейдет на верхнии сточки, если +, то на нижнии" << endl;
int shift = 0;

cin >> shift;
if (((pos + shift) < 0) || ((pos + shift) >= lineCount)) {

cout << "Вы ввели значение сдвига, которое направляет за границы данных" << endl;

}

else {

// Просто сдвигаем позицию на ту, что передал пользователь.

pos += shift;
}
break;

}

// Если ползователь ввел "6", то нам требуется

// вывести на экран заданное число строк, начиная с текущей строки

case 6: {

int countPrintLines = 0;

do {

if (countPrintLines < 0)

cout << "Число строк должно быть больше 0" << endl;

countPrintLines = read("Введите количество строк, которое нужно вывести: ");

} while (countPrintLines < 0);

// Проверка, которая нужна, чтобы пользователь не пытался вывести данные, которых нет.

if ((countPrintLines + pos) > lineCount) {

countPrintLines = lineCount - pos;

cout << "Для вывода доступно максимум " << countPrintLines << " строк" << endl;

}

else {

cout << printLines(editString, pos, countPrintLines);

} break;

}

// Если ползователь ввел "7", то нам требуется

// записать текст в файл с именем, указанным в команде

case 7:

{

string fileName = "";
cout << "Введите имя файла, в который требуется сохранить изменения: ";

cin >> fileName;
if (saveStringInFile(fileName, printLines(editString, 0, lineCount))) {

cout << "Успешно записано!" << endl;

}

else {

cout << "Ошибка открытия файла" << endl;

}
break;

}

default: {

cout << "Данный номер комманды не найден" << endl;

break;

}

}

}

}

}

1   2   3   4   5   6


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