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

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

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

/*Всем Доброго дня помогите переписать код из си++ в си (Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами.)*/
#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Rus");
    std::vector<std::string> arr;
    std::string str;
    std::string word;
    int i = 0;
 
    std::cout << "Введите предложение.." << std::endl;
    std::getline(std::cin, str);
 
    std::stringstream  data(str);
 
    while(std::getline(data,word,' '))
    {
        if(i++ % 2 == 0)
        {
            std::reverse(word.begin(), word.end());
            arr.push_back(word);
        }
    }
 
    for (std::vector<std::string>::iterator iter = arr.begin(); iter < arr.end(); ++iter)
        std::cout << *iter << std::endl;
 
    return 0;
}

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define DELIM "     \n.,?!';:-"
//Отредактировать заданное предложение,удаляя из него все слова с нечетными номерами и
//переворачивая слова с четными номерами.
int main()
{
    char s[128], *p;
    int i = 0, n, len;
    puts("Enter line:");
    fgets(s, 128, stdin);
    for(n = 1,p = strtok(s, DELIM); p; p = strtok(NULL, DELIM), n++){
        if(n % 2 == 0){
            for(len = strlen(p); len > 0; len--,i++)
                s[i] = p[len - 1];
            s[i] = ' ';
            i++;
        }
    }
    s[i] = '\0';
    puts(s);
    return 0;
}

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

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

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

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

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