Удалить из предложения все слова с нечетными номерами и перевернуть слова с четными номерами - 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;
- }
Объяснение кода листинга программы
В этом коде программа запрашивает у пользователя строку и затем обрабатывает её, удаляя все слова с нечетными номерами и переворачивая слова с четными номерами. Вот список действий, которые происходят в коде:
- Ввод строки от пользователя.
- Выделение отдельных слов из строки. Это делается с помощью функции
strtok
, которая разбивает строку на слова, используя указанный разделитель (в данном случае пробел и знаки препинания). Каждое слово помечается как нечетное или четное с помощью переменнойn
. - Переворот четных слов. Если номер слова четный, то программа переворачивает его, двигаясь от последнего символа к первому.
- Удаление нечетных слов. Если номер слова нечетный, то программа удаляет его из строки.
- Объединение обработанных слов обратно в строку. После обработки всех слов, программа объединяет их обратно в строку, добавляя пробелы между словами.
- Вывод обработанной строки.
Список переменных:
s
- массив символов, в котором хранится исходная строка.p
- указатель на текущее слово.n
- переменная, которая отслеживает номер текущего слова.len
- переменная, которая хранит длину текущего слова.i
- переменная, которая отслеживает индекс последнего добавленного слова в итоговую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д