Удалить из предложения все слова с нечетными номерами и перевернуть слова с четными номерами - 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
- переменная, которая отслеживает индекс последнего добавленного слова в итоговую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д