Разбить строку на лексемы - 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 << ' ';
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с C++ (iostream, cstring).
  2. Объявление константы size, которая определяет максимальный размер вводимой строки.
  3. Создание массива символов str1 с фиксированным размером.
  4. Вывод сообщения с просьбой ввести строку текста.
  5. Считывание строки текста с помощью функции getline, помещаем ее в массив str1.
  6. Вызов функции strtok, которая разобьет введенную строку на отдельные лексемы по заданному разделителю (в данном случае ,-).
  7. Полученное значение (указатель на первую лексему) сохраняем в переменную c.
  8. В цикле while (пока не будет получено значение NULL) выводим каждую лексему в обратном порядке с помощью функции revers.
  9. После каждой итерации цикла вызываем strtok с аргументом NULL, чтобы получить следующую лексему.
  10. Внутри функции revers происходит вывод символов в обратном порядке с помощью цикла for и выводится пробел в конце.
  11. В конце программы добавляется пробел для разделения лексем.
  12. Не забудьте #include для использования функции strlen и strtok.
  13. Не забудьте #include для использования функций cout и cin.
  14. Не забудьте включить директиву using namespace std, чтобы использовать функции cin и cout без явного указания std::.
  15. Функция revers не принимает аргументов, но должна работать с указателем на символ.
  16. Внутри цикла for необходимо использовать индексы для обращения к символам в обратном порядке (от strlen - 1 до 0).
  17. Значение strlen - 1 должно быть использовано для обращения к последнему символу в строке.
  18. Функция revers должна выводить символы в обратном порядке с помощью оператора cout.
  19. В конце функции revers необходимо выводить пробел с помощью оператора cout.
  20. Не забудьте добавить справку в комментарии к коду, описывающую его функциональность.

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы