массивы — C ++ Удалить равномерно пронумерованные слова из строки

возникли некоторые проблемы с реализацией логики для одной домашней задачи. В настоящее время я использую платформу Visual Studio 2013 и являюсь новичком. Мы используем терминал (командную строку), встроенный в приложение, для получения ввода и вывода. В настоящее время мы используем «CIN» и «COUT». Проблема заключается в следующем:

«Напишите программу, которая запрашивает у пользователя предложение, а затем отбирает каждое четное слово. Например:« Все президенты »станут« Все президенты ». Верните измененное предложение в функцию main (), используя выходной параметр а затем отобразить как оригинальные, так и измененные предложения «.

Я пытался применить это с логикой, которая помещает каждое слово в массив / вектор и удаляет каждое слово с индексом четного числа. Я до сих пор не достиг этого, и я прошу помощи у вас, эксперты!

Спасибо много.

-1

Решение

Live Demo

std::string line;

// get input from cin stream
if (std::getline(cin, line)) // check for success
{
std::vector<std::string> words;
std::string word;

// The simplest way to split our line with a ' ' delimiter is using istreamstring + getline
std::istringstream stream;
stream.str(line);

// Split line into words and insert them into our vector "words"while (std::getline(stream, word, ' '))
words.push_back(word);

if (words.size() % 2 != 0) // if word count is not even, print error.
std::cout << "Word count not even " << words.size() << " for string: " << line;
else
{
//Remove the last word from the vector to make it odd
words.pop_back();

std::cout << "Original: " << line << endl;
std::cout << "New:";

for (std::string& w : words)
cout << " " << w;
}
}
1

Другие решения

Вы могли бы написать что-то вроде этого

int count = -1;
for (auto it =input.begin();it!=input.end();){
if(*it==' '){
count++;it++;
if (count%2==0){
while (it != input.end()){
if (*it==' ')break;
it=input.erase (it);
}
}else it++;
}else it++;
}`
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector