Напечатать слова отличные от последнего введенного с четным количеством букв — c++ строки

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


Задан текст нужно напечатать слова отличные от последнего введенного с четным количеством букв. Реализовать нужно через string. Пример: Строка: hi how hello dear how. Вывод:hi dear.

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>


int main() {
    std::vector <std::string> arr;
    std::string word;

    while (std::cin >> word)
        arr.push_back(word);

    std::cout << word << 'n';

    return 0;
}

Автор вопроса: user321113

AR Hovsepyan

Код, который, вы написали на языке С, по моему не соответствует требованию задачи тем, что нужно слова сравнивать с последным введенным словом, а не с первым. Дальше, пытаясь писать на С++, в используете std::vector, что тоже не соответствует требованию задачи, поскольку нужно реализовать через std::string, а последный имеет все возможности для отделения слов по разделителью. Покажу на примере:

using std::string;
const string s = "int i = 1234  j = 456789 k = 123456  endl  endl";
//или  введите всю строку:  string s; getline(std::cin, s);
//теперь находим позицию последнего пробела
size_t k = s.find_last_of(' ');
//и берем последнее слово начиная от следующей позиции, и выполняем обьявления
string last_word = s.substr(++k),
        word;
size_t  first = 0, last = 0, word_size = 0;
while (first <= k) {
    //находим первый пробел в строке, начиная от начала слова
    last  = s.find(' ', first);
    // размер слова
    word_size = last - first;
    // подстрока от начала слова, с данным размером
    word = s.substr(first, word_size);
    //начало следующего слова, это позиция первого символа_непробела,
    // начиная от конца последнего слова
    first = s.find_first_not_of(' ', last);
    // и выполняем проверку, соответствующую условию задачи...
    if (!(word == last_word) && !(word.size() % 2))
       std::cout << word << endl;        
}

Будут выводиться только числа, поскольку все другие слова имеют нечетное количество сиволов, а endl не отличается от последнего слова. Если нужно, то можете выводить последнее слово тоже: if(!(last_word.size() % 2)) std::cout << last_word;

P.S. По хорошему нужно в начале кода пропускать первые пробелы(ведь они вполне могут быть). Ну и не пишите код в комментариях, лучше дописать в вопрос…

Источник

Вам также может быть интересно:

Drag and Drop UWP — c# xaml mvvm
Вопрос: Нужно иметь возможность добавлять изображения в приложение путем перетаскивания из файловой системы У Grid включил AllowDrop. Но как добавить перетаскиваемые изображения в коллекцию? Т.к. те ...
Растягивание Высоты , Резина — html css html5
Вопрос: Здравствуйте! Реализовал резиновый дизайн. Растягивается ширина, но длина по % не растягивается. Возможно ли это реализовать? Или так и задумано, растягивание только на ширину ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
requestAnimation и очередность отрисовки — javascript canvas
Вопрос: Здравствуйте! Реализовал 2D игру и в Edge работает все плавно и круто, но в Firefox'e подвисает, сказали, что нужно сделать, чтобы раз-два момент и все ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
ViewPager внутри ViewPager — такие матрешки работают? — android viewpager
Вопрос: Доброго времени суток. Назрела новая задача. Есть каталог мастеров. При выборе конкретного мастера открывается его страница (активити с ViewPager), и теперь мастеров можно перелистывать свайпом. ...
Почему id всегда 1 Yii2 — yii авторизация
Вопрос: Использую все как по документации. Для получения информации о пользователе использую $identity = $model->findOne(]); И каким бы не был email, id пользователя всегда ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *