Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
КенТюРиК
11 / 11 / 3
Регистрация: 18.10.2012
Сообщений: 148
#1

Произвести вставку слова «не» перед каждым третьим словом в предложении - C++

30.01.2013, 04:26. Просмотров 711. Ответов 9
Метки нет (Все метки)

Подскажите пожалуйста,как дать программе понять,что она наткнулась на пробел,я поискал и не нашел символа отвечающего за пробел...Хотел сделать чтобы после пробелов кратных трем писалось (не)...
http://www.cyberforum.ru/cpp-beginners/thread1046600.html
Но увы похоже этот способ не осуществим и не рационален,подскажите пожалуйста грамотное решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 04:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Произвести вставку слова «не» перед каждым третьим словом в предложении (C++):

Перед каждым словом добавить слово
Перед каждым словом, начинающимся с буквы 'a' добавить слово "вот".

Перед каждым словом поставить три символа «---»
Введите строку. Преобразуйте строку таким образом, чтобы перед каждым словом...

Ввести строку. Вывести строку так, чтобы за каждым словом следовало количество пробелов, равное длине слова.
Ввести строку. Вывести строку так, чтобы за каждым словом следовало количество...

В произвольном тексте вставить между вторым и третьим словом новое слово
"В произвольном тексте вставить между вторым и третьим словом новое слово."...

Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "and" запятую
Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив...

9
UnsKneD
алкокодер
155 / 151 / 41
Регистрация: 27.12.2012
Сообщений: 550
30.01.2013, 05:30 #2
Цитата Сообщение от КенТюРиК Посмотреть сообщение
не нашел символа отвечающего за пробел
А сам пробел не символ что ли?
C++
1
if( str[i] == ' ' )
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
30.01.2013, 06:12 #3
Цитата Сообщение от КенТюРиК Посмотреть сообщение
и не нашел символа отвечающего за пробел...
Цитата Сообщение от UnsKneD Посмотреть сообщение
А сам пробел не символ что ли
плюс числовые значения
0x20
32
0
КенТюРиК
11 / 11 / 3
Регистрация: 18.10.2012
Сообщений: 148
01.02.2013, 00:50  [ТС] #4
Ввести с клавиатуры предложение. Произвести вставку слова «не» перед каждым третьим словом в предложении.

Помогите реализовать.Я хотел сделать массив из некого количества елементов,но так как если ввести например N[100],то пока не введешь все 100 элементов работать не будет,и поэтому я хотел ввести условие если появляется символ (Enter),то начинается выполнение условия,которое проверяет на кратность символы пробелов и перед кратным трем выводит (не).

Но увы не получилось все соединить воедино.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
01.02.2013, 01:20 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <locale>
 
 
int main()
{
    std::locale::global(std::locale("") );
    std::string wstr;
    std::getline(std::cin, wstr);
    std::istringstream wist(wstr);
    int counter = 0;
    std::for_each(std::istream_iterator<std::string>(wist),
        std::istream_iterator<std::string>(),
        [&counter] (const std::string &ws)
        {
            if (++counter % 3 == 0) std::cout << "не";
            std::cout << ws << " ";
        } );
}
http://liveworkspace.org/code/1x3EoU
1
КенТюРиК
11 / 11 / 3
Регистрация: 18.10.2012
Сообщений: 148
01.02.2013, 01:40  [ТС] #6
Как все запутанно,неужели все так мудрено?
C++
1
2
3
4
5
6
7
8
 std::locale::global(std::locale("") );
    std::string wstr;
    std::getline(std::cin, wstr);
    std::istringstream wist(wstr);
    int counter = 0;
    std::for_each(std::istream_iterator<std::string>(wist),
        std::istream_iterator<std::string>(),
        [&counter] (const std::string &ws)
Практически все пока для меня темный лес((
0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
01.02.2013, 01:55 #7
КенТюРиК, в таком случае strtok

Добавлено через 10 минут
Цитата Сообщение от КенТюРиК Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
std::locale::global(std::locale("") ); // устанавливаем локаль
* * std::string wstr; // объявляем переменную типа string
* * std::getline(std::cin, wstr); // считываем до встречи '\n' (до нажатия Enter)
* * std::istringstream wist(wstr); // объявляем объект класса istringstream, для манипуляции со строками, передавая туда в качестве аргумента строку wstr. Теперь можно считывать оттуда как из стандартного потока
* * int counter = 0; // думаю понятно
* * std::for_each(std::istream_iterator<std::string>(wist), // пока удается считать из потока (до EOF) элементы типа std::string
* * * * std::istream_iterator<std::string>(),
* * * * [&counter] (const std::string &ws)// лямбда-функция, извне передается переменная counter по ссылке (замыкание). То, что в круглых скобках - тип объекта, над которым дальше будет идти работа. Проще говоря, мы для каждого элемента std::string из std::istringstream выполняем то, что идет далее
1
КенТюРиК
11 / 11 / 3
Регистрация: 18.10.2012
Сообщений: 148
01.02.2013, 02:01  [ТС] #8
Большое спасибо сейчас буду разбираться.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
01.02.2013, 02:07 #9
"Без понтов"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <locale>
#include <cstring>
 
int main()
{
    std::locale::global(std::locale("") ); // устанавливаем локаль
    char str[256];
    std::cin.getline(str, 256);
    int counter = 0;
    for(char *p = std::strtok(str, " "); p; p = strtok(NULL, " "))
    {
        if (++counter % 3 == 0) std::cout << "не";
        std::cout << p << " ";
    }
}
1
КенТюРиК
11 / 11 / 3
Регистрация: 18.10.2012
Сообщений: 148
01.02.2013, 02:13  [ТС] #10
Оуу))
Так намного приятнее,но все равно интерес к первому варианту у меня остался,хочу в нем все полностью понять)

P.s Везде поставил вам спасибо))
0
01.02.2013, 02:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 02:13
Привет! Вот еще темы с решениями:

Строки. Произвести над каждым символом операцию побитового И
Ввести в консоли строку из пяти символов, а затем произвести над каждым...

Составить программу, которая добавляет за каждым словом все его падежные формы
помогите написать программу заранее спасибо.Элементами списка являются слова —...

Произвести над каждым символом строки операцию побитового И, со вторым операндом равным 11010111.
Ввести в консоли строку из пяти символов, а затем произвести над каждым...

Постановка запятой перед каждым пробелом
#include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru