Символьные строки без стандартных функций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, написать программу, которая вводит строку текста, разбивает ее на лексемы и выводит лексемы в обратном порядке. (Не используя strtok)

Решение задачи: «Символьные строки без стандартных функций»

textual
Листинг программы
#include <stdio.h>
#include <stdio.h>
 
int main() {
    char str[] = "You can also:click on; a link in! the move list, to go back? in time and. see what"
                  " the board looked    like just after that move was made.";
    char delim[] = " \t\n,.?!;:", *first, *last;
    int i, j, flag = 0, sym = 1;
    for(i = 0; str[i]; i++, sym = 1){
        for(j = 0; delim[j]; j++)
            if(str[i] == delim[j])
                sym = 0;
        if(sym){
            if(!flag){
                first = &str[i];
                flag = 1;
            }
        }
        else{
            if(flag){
                last = &str[i - 1];
                flag = 0;
                while(last >= first)
                    putchar(*last--);
                putchar('\n');
            }
        }
    }
    return 0;
}

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

  1. Включаются заголовочные файлы stdio.h и stdio.h
  2. Объявляется переменная str типа char, которая содержит строку You can also:click on; a link in! the move list, to go back? in time and. see what the board looked like just after that move was made.
  3. Объявляется переменная delim типа char, которая содержит строку \t\n,.?!;:
  4. Объявляются переменные i, j типа int, которые используются в циклах
  5. Объявляются переменные flag и sym типа int, которые используются для контроля выхода из циклов
  6. Задается значение переменной sym равное 1
  7. В цикле for перебираются символы строки str
  8. В каждой итерации цикла проверяется, является ли текущий символ одним из символов, разделенных строкой delim
  9. Если текущий символ является одним из символов delim, то значение переменной sym меняется на 0
  10. Если значение переменной sym равно 1, то проверяется, была ли ранее установлена переменная flag
  11. Если переменная flag еще не была установлена, то значение переменной first присваивается адрес текущего символа str, а переменная flag устанавливается в 1
  12. Если значение переменной sym равно 0, то проверяется, была ли ранее установлена переменная flag
  13. Если переменная flag уже была установлена, то значение переменной last присваивается адрес предыдущего символа str, а переменная flag устанавливается в 0
  14. Если переменная flag равна 0, то выводится последовательность символов от last до first с помощью функции putchar
  15. Выводится символ новой строки с помощью функции putchar
  16. Цикл for завершается
  17. Возвращается 0, что означает успешное завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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