Форум программистов, компьютерный форум CyberForum.ru

Из строки вырезать слова, стоящие на четном месте - C++

Восстановить пароль Регистрация
 
ffynjy
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 22
02.03.2014, 12:50     Из строки вырезать слова, стоящие на четном месте #1
Из строки вырезать слова, стоящие на четном месте.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 12:50     Из строки вырезать слова, стоящие на четном месте
Посмотрите здесь:

Поменять местами слова строки стоящие на четных и нечетных позициях C++
C++ В массиве из 16 элементов найти минимальный элемент, расположенный на четном месте
[C++] удалить из слова буквы,стоящие на четных местах C++
C++ Вводится строка. Вывести слова стоящие на нечетных местах и имеющие длину больше длины предпоследнего слова.
вырезать числа из строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
d1skort
20 / 20 / 0
Регистрация: 10.02.2013
Сообщений: 75
02.03.2014, 14:02     Из строки вырезать слова, стоящие на четном месте #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::ifstream fin("input.txt");
    std::string str{std::istreambuf_iterator<char>(fin), std::istreambuf_iterator<char>()};
    int i = 1;
    auto newend = remove_if(str.begin(), str.end(), [&i](char c){
        if (c == ' ')
            ++i;
        return !(i & 1);});
    str.erase(newend, str.end());
    std::cout << str;
    return 0;
}
_include
Студент
 Аватар для _include
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
02.03.2014, 14:07     Из строки вырезать слова, стоящие на четном месте #3
Две строки. Одна с предложением, другая пустая. Считываем пробелы - одно слово, затем пробел, допустим к счетчику прибавили единичку. Делаем проверку - если счетчик не четный, то пишем в новую строку текущее слово, снова дошли до пробела, снова +1 к счетчику. Четное? Значит пропускаем и т.д.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от d1skort Посмотреть сообщение
std::string str{std::istreambuf_iterator<char>(fin), std::istreambuf_iterator<char>()};
* * int i = 1;
* * auto newend = remove_if(str.begin(), str.end(), [&i](char c){
* * * * if (c == ' ')
* * * * * * ++i;
* * * * return !(i & 1);});
* * str.erase(newend, str.end());
Если человек пишет в тему для начинающих, не факт, что он знает все итераторы и прочие erase, remove_if. Если Вам не трудно, распишите что делает каждая функция.
За частую такие задания встречаются в лабах, а там такого функционала не требуется.

Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.03.2014, 14:14     Из строки вырезать слова, стоящие на четном месте #4
d1skort, зачем читать посимвольно, а потом делить на строки по пробелу, если можно сразу читать по словам?
d1skort
20 / 20 / 0
Регистрация: 10.02.2013
Сообщений: 75
02.03.2014, 14:20     Из строки вырезать слова, стоящие на четном месте #5
«Я не волшебник, я только учусь» (с)
Не могу додуматься как это сделать, если читать по строкам.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.03.2014, 14:37     Из строки вырезать слова, стоящие на четном месте #6
d1skort,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iterator>
#include <string>
 
int main() {
 
    for( auto it=++std::istream_iterator<std::string>(std::cin); it!=std::istream_iterator<std::string>(); std::advance(it,2) )
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
    
    return 0;
}
http://ideone.com/faWsyM
Yandex
Объявления
02.03.2014, 14:37     Из строки вырезать слова, стоящие на четном месте
Ответ Создать тему
Опции темы

Текущее время: 01:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru