Задача такова, что в обычном тексте на русском языке, который находится в файле.txt выделить оттуда кусок текста, выбрать из него слова и отсортировать их в алфавитном порядке, используя сортировку расческой. Файл я открыл, нужную часть выделил, хранится она вот здесь
char *b3 = new char[t];
Затем вот так вот я выдернул оттуда все слова, убрав все лишнее:
cout << "Разделение строки на лексемы:\n";
char *next = 0; //для мусора символов
char * pch = strtok_s(b3, " ,.-0123456789;:<>()—[]«»", &next); // во втором параметре указаны разделитель (пробел, запятая, точка, тире)
while (pch != NULL) // пока есть лексемы
{
cout << pch << " ";
pch = strtok_s(NULL, " ,.-0123456789;:<>()—[]«»", &next);
}
Осталась сама сортировка. Про расческу я прочитал, принцип работы более менее ясен. Вопрос про то, каким образом подходить к сортировке, ведь там есть слова, начинающиеся с большой буквы и т.д. В общем неясно, чем манипулировать при сортировке и с какой стороны к этому подступиться) вот я пытаюсь приравнять все символы к нижнему регистру для равной сортировки
cout << "Разделение строки на лексемы:\n";
char *next = 0; //для мусора символов
char * pch = strtok_s(b3, ",.-0123456789;:<>()—[]«»?!\n\t\v", &next); // во втором параметре указаны разделитель (пробел, запятая, точка, тире)
while (pch != NULL) // пока есть лексемы
{
for (int i=0; pch[i]; i++) {
if (isupper(pch[i]))
pch[i] = tolower(pch[i]);
i++;
}
cout << pch;
pch = strtok_s(NULL, ",.-0123456789;:<>()—[]«»?!\n\t\v", &next);
}
но выскакивает следующая ошибка
то, что вы там видите в консоли ниже - часть другого задания. и текст до извлечения из него одних слов. по теме будущей сортировки: мне сказали, что скорее всего решение будет таким:между словами будут пробелы, потребуется работа с указателями. поиск символа через strchr, для поиска конца слова пробел. Затем слово копируется во временную переменную strncpy. С указателями я не силен, лишь читал о них, кто-нибудь может разжевать немного подробнее?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вот простенький код, на экран выводит число равное 3, почему? откуда взялись эти 3 байта
Создал окно без рамкиСейчас написал код который работает только при увеличении размеров окна, если пытаться уменьшить то получается белиберда...
имеется таблица,необходимо было сделать ввод в ячейки только double:
мне необходимо многопоточно обработать элементы std::mapc++ 17 для это есть for_each parallel, но я работаю на C++ 14