2016-03-01 5 views
-1

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

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

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

Большое спасибо.

+0

Пожалуйста, немного более конкретно о том, что вы пробовали и то, что проблема (например, показывая нам свой код). – MikeMB

ответ

0

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

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++; 
}` 
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; 
    } 
} 
Смежные вопросы