From 7f4b849e2c2a956046c083653f110b53eeff152e Mon Sep 17 00:00:00 2001 From: GorokhovDE Date: Mon, 23 Dec 2024 10:43:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=88=D0=B5=D0=BD=D0=B0=20=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D1=87=D0=B0=D1=81=D1=82=D1=8C?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab04/lab04-C.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lab04/lab04-C.cpp diff --git a/lab04/lab04-C.cpp b/lab04/lab04-C.cpp new file mode 100644 index 0000000..453a1e2 --- /dev/null +++ b/lab04/lab04-C.cpp @@ -0,0 +1,35 @@ +#include // Для fgets() +#include // Для strspn() и strcspn() +#include + +using namespace std; + +int main() { + const size_t MAX_SIZE = 256; // Максимальный размер строки + char text[MAX_SIZE]; // Массив для ввода строки + const char* separators = " \r\n,.!?:;()-"; // Разделители слов + + // Ввод строки с консоли + cout << "Enter a string: "; + fgets(text, MAX_SIZE, stdin); + + const char* start = text; // Указатель на начало строки + + // Цикл для обработки строки + while (true) { + const size_t separator_count = strspn(start, separators); // Кол-во разделителей в начале + start += separator_count; // Пропуск разделителей + + if (start[0] == '\0') { // Если достигнут конец строки, завершить + break; + } + + const size_t word_length = strcspn(start, separators); // Длина следующего слова + cout.write(start, word_length); // Печать слова + cout << '\n'; // Перевод строки + + start += word_length; // Переместить указатель на следующий блок + } + + return 0; +}