Удалить из предложения все слова с нечетными номерами и перевернуть слова с четными номерами - C (СИ)

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

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

/*Всем Доброго дня помогите переписать код из си++ в си (Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами.)*/
Листинг программы
  1. #include <iostream>
  2. #include <vector>
  3. #include <sstream>
  4. #include <algorithm>
  5. int main(int argc, char* argv[])
  6. {
  7. setlocale(LC_ALL, "Rus");
  8. std::vector<std::string> arr;
  9. std::string str;
  10. std::string word;
  11. int i = 0;
  12. std::cout << "Введите предложение.." << std::endl;
  13. std::getline(std::cin, str);
  14. std::stringstream data(str);
  15. while(std::getline(data,word,' '))
  16. {
  17. if(i++ % 2 == 0)
  18. {
  19. std::reverse(word.begin(), word.end());
  20. arr.push_back(word);
  21. }
  22. }
  23. for (std::vector<std::string>::iterator iter = arr.begin(); iter < arr.end(); ++iter)
  24. std::cout << *iter << std::endl;
  25. return 0;
  26. }

Решение задачи: «Удалить из предложения все слова с нечетными номерами и перевернуть слова с четными номерами»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define DELIM "     \n.,?!';:-"
  4. //Отредактировать заданное предложение,удаляя из него все слова с нечетными номерами и
  5. //переворачивая слова с четными номерами.
  6. int main()
  7. {
  8.     char s[128], *p;
  9.     int i = 0, n, len;
  10.     puts("Enter line:");
  11.     fgets(s, 128, stdin);
  12.     for(n = 1,p = strtok(s, DELIM); p; p = strtok(NULL, DELIM), n++){
  13.         if(n % 2 == 0){
  14.             for(len = strlen(p); len > 0; len--,i++)
  15.                 s[i] = p[len - 1];
  16.             s[i] = ' ';
  17.             i++;
  18.         }
  19.     }
  20.     s[i] = '\0';
  21.     puts(s);
  22.     return 0;
  23. }

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

В этом коде программа запрашивает у пользователя строку и затем обрабатывает её, удаляя все слова с нечетными номерами и переворачивая слова с четными номерами. Вот список действий, которые происходят в коде:

  1. Ввод строки от пользователя.
  2. Выделение отдельных слов из строки. Это делается с помощью функции strtok, которая разбивает строку на слова, используя указанный разделитель (в данном случае пробел и знаки препинания). Каждое слово помечается как нечетное или четное с помощью переменной n.
  3. Переворот четных слов. Если номер слова четный, то программа переворачивает его, двигаясь от последнего символа к первому.
  4. Удаление нечетных слов. Если номер слова нечетный, то программа удаляет его из строки.
  5. Объединение обработанных слов обратно в строку. После обработки всех слов, программа объединяет их обратно в строку, добавляя пробелы между словами.
  6. Вывод обработанной строки. Список переменных:
    • s - массив символов, в котором хранится исходная строка.
    • p - указатель на текущее слово.
    • n - переменная, которая отслеживает номер текущего слова.
    • len - переменная, которая хранит длину текущего слова.
    • i - переменная, которая отслеживает индекс последнего добавленного слова в итоговую строку.

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


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

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

14   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы