Разбить строку на лексемы - C (СИ)
Формулировка задачи:
Напишите программу, которая вводит строку текста, разбивает его на лексемы с помощью strtok и выводит лексемы в обратном порядке.
Решение задачи: «Разбить строку на лексемы»
textual
Листинг программы
#include <iostream> #include <cstring> //#include <CyrIOS.h> using namespace std; int main() {const int size = 100; char str1[size]; cout << "Введите строку текста: "; cin.getline(str1, size); char* c = strtok(str, " ,-"); while(c != NULL) { revers(c); c = strtok(NULL, " ,-"); } } void revers(char* c) { int end = strlen(c) - 1; for(int i = end; i >= 0; i--) { cout << c[i]; } cout << ' '; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с C++ (iostream, cstring).
- Объявление константы size, которая определяет максимальный размер вводимой строки.
- Создание массива символов str1 с фиксированным размером.
- Вывод сообщения с просьбой ввести строку текста.
- Считывание строки текста с помощью функции getline, помещаем ее в массив str1.
- Вызов функции strtok, которая разобьет введенную строку на отдельные лексемы по заданному разделителю (в данном случае
,-
). - Полученное значение (указатель на первую лексему) сохраняем в переменную c.
- В цикле while (пока не будет получено значение NULL) выводим каждую лексему в обратном порядке с помощью функции revers.
- После каждой итерации цикла вызываем strtok с аргументом NULL, чтобы получить следующую лексему.
- Внутри функции revers происходит вывод символов в обратном порядке с помощью цикла for и выводится пробел в конце.
- В конце программы добавляется пробел для разделения лексем.
- Не забудьте #include
для использования функции strlen и strtok. - Не забудьте #include
для использования функций cout и cin. - Не забудьте включить директиву using namespace std, чтобы использовать функции cin и cout без явного указания std::.
- Функция revers не принимает аргументов, но должна работать с указателем на символ.
- Внутри цикла for необходимо использовать индексы для обращения к символам в обратном порядке (от strlen - 1 до 0).
- Значение strlen - 1 должно быть использовано для обращения к последнему символу в строке.
- Функция revers должна выводить символы в обратном порядке с помощью оператора cout.
- В конце функции revers необходимо выводить пробел с помощью оператора cout.
- Не забудьте добавить справку в комментарии к коду, описывающую его функциональность.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д