Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Flysolo
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 22
#1

Задача из книги Страуструпа 4 глава векторы - C++

24.07.2015, 01:05. Просмотров 1313. Ответов 11
Метки нет (Все метки)

Задача: Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте слова из потока cin и выведите их в поток cout, заменив нежелательные слова словом BLEEP. Начните с одного нежелательного слова, например string disliked = "Broccoli"; Когда отладите программу, добавьте еще несколько нежелательных слов.

Первую часть я выполнил

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "std_lib_facilities.h"
#include <clocale>
#include <vector>
#include <conio.h>
 
int main()
 
{
setlocale (LC_ALL, "Russian");
 
vector<string> words; 
    string temp;
    string disliked = "bro";
    
 
    while (cin>>temp)  
        words.push_back(temp);
        cout << "Количество слов в векторе: " << words.size() << endl;
 
        sort(words.begin(), words.end());
 
    for (int i = 0; i<words.size(); ++i){
        if (words[i] == disliked)
            cout << "BLEEP" << endl;    
        else 
            cout << words[i] << endl;
    }
 
_getch();   
return 0;
}
Подскажите способ попроще добавить несколько слов вместо одного
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2015, 01:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Задача из книги Страуструпа 4 глава векторы (C++):

Упражнение №8 глава 5 из книги Страуструпа
Здравствуйте. Помогите решить задание. Напишите программу,считывающую ряд...

Задача из книги Страуструпа (4.6.3)
Читаю книгу Страуструпа не могу понять как сортировать функцией sort. пример...

Задача из книги Страуструпа
Нужна ваша помощь или хотя бы подсказка, в одном из упражнений в книге...

Задача из книги Страуструпа
Меня настораживает несколько странная формулировка, я не понимаю зачем так...

Глава 12 Страуструпа (графика)
Всем привет! Кто-нибудь справлялся с примером из главы 12? У меня не...

Задачка из страуструпа , глава 4 ,вектора
Здравствуйте, помогите пожалуйста довести задачку до ума Вот сама задачка:...

11
wareZ1400
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 200
Записей в блоге: 15
Завершенные тесты: 2
24.07.2015, 01:12 #2
Flysolo,
а вы читаете книгу "Программирование: принципы и практика использования C++" ISBN 978-5-8459-1705-8 (рус.) © Издательский дом “Вильямс”, 2011
ISBN 978-0-321-54372-1 (англ.) © Pearson Education, Inc., 2009 ?
0
Flysolo
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 22
24.07.2015, 01:29  [ТС] #3
Да, она самая. Сложновато понять автора
0
Krasiosoft
51 / 51 / 23
Регистрация: 01.06.2015
Сообщений: 189
24.07.2015, 02:53 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int main(){
 
    setlocale (LC_ALL, "Russian");
 
    vector<string> words;
    string temp;
    vector<string> dislikedWords;
    dislikedWords.push_back("bro");
    dislikedWords.push_back("komrad");
 
    while (cin>>temp)
        words.push_back(temp);
    cout << "Количество слов в векторе: " << words.size() << endl;
 
    size_t j;
    for (size_t i = 0; i<words.size(); ++i){
 
        for (j = 0; j<dislikedWords.size(); ++j){
            if(words[i]==dislikedWords[j]) break;
        }
 
        if(j!=dislikedWords.size()){
            cout << "BLEEP" << endl;
        }else{
            cout << words[i] << endl;
        }
    }
 
    _getch();
    return 0;
}
Так нужно?
1
Flysolo
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 22
24.07.2015, 03:38  [ТС] #5
Krasiosoft,
я еще не проверил скорее всего Ваш код работает, но дело в том, что я пока еще не знаю что такое
C++
1
size_t j;
по книге до этого еще не дошел. И вот этот участок кода
C++
1
2
3
4
5
for (size_t i = 0; i<words.size(); ++i){
 
        for (j = 0; j<dislikedWords.size(); ++j){
            if(words[i]==dislikedWords[j]) break;
        }
мне, если честно, не понятен. Был бы очень благодарен, если бы Вы описали его русским языком. Спасибо за понимание.

Добавлено через 7 минут
Да, и еще, я проверил Вашу версию программы: слова выводятся по списку в порядке считывания, а не по алфавиту. В остальном все в порядке.
0
Krasiosoft
51 / 51 / 23
Регистрация: 01.06.2015
Сообщений: 189
24.07.2015, 03:51 #6
Тогда так должно быть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int main(){
 
    setlocale (LC_ALL, "Russian");
 
    vector<string> words;
    string temp;
    vector<string> dislikedWords;
    dislikedWords.push_back("bro");
    dislikedWords.push_back("komrad");
 
    while (cin>>temp)
        words.push_back(temp);
    cout << "Количество слов в векторе: " << words.size() << endl;
    sort(words.begin(), words.end());
 
    size_t j;
    for (size_t i = 0; i<words.size(); ++i){
 
        for (j = 0; j<dislikedWords.size(); ++j){  //  цикл, который проходиться по всем нежелательным словам
            if(words[i]==dislikedWords[j]) break;  //  если наше слово words[i] входит в список нежелательных слов, тогда выходим с цикла
        }
 
        if(j!=dislikedWords.size()){  //  если j == количеству нежелательных слов, тогда выхода с цикла не было и можно выводить слово, иначе выводим "BLEEP"
            cout << "BLEEP" << endl;
        }else{
            cout << words[i] << endl;
        }
    }
 
    _getch();
    return 0;
}
size_t - это тип данных, который возвращает метод size(), чтоб не было разногласия типов, сделал именно так.
1
wareZ1400
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 200
Записей в блоге: 15
Завершенные тесты: 2
24.07.2015, 09:49 #7
Flysolo
Я тоже читаю эту книгу создателя C++, только начал 3 главу. Согласен, немного странно она написана. Я читаю сразу несколько источников, чтобы лучше доходило + в разных источниках можно найти информацию, которая в других источниках может быть не рассмотрена и рассмотрена только на поверхностном уровне.
0
Flysolo
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 22
24.07.2015, 13:45  [ТС] #8
wireZ, Можете перечислить что Вы читаете?
0
wareZ1400
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 200
Записей в блоге: 15
Завершенные тесты: 2
25.07.2015, 00:35 #9
Flysolo,
С удовольствием. Еще читаю книгу Стивена Прата "Язык программирования С++. Лекции и упражнения" 2011 г. , Стефан Р. Дэвис "C++ для чайников" 2003 г.

Еще есть другие книги по C++, может быть и их прочитаю, и скорее всего еще книг найду.
0
Enno
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
25.07.2015, 05:49 #10
Почему всё в main() запихиваете? Напишите функцию определения "особого"-слова, а в ней хоть по списку, хоть по времени определяйте.
0
MPK
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 5
01.04.2017, 20:09 #11
Ребят. Я не давно начал изучать программирование и начал с с++ по этой книге. Попал в эту тему, т.к. аналогичен был вопрос. Напечатал код, данный Krasiosoft (спасибо большое) и начал вникать. Так вот, чтобы вникнуть и понять суть происходящего у меня ушло 2 листа и 2 часа времени. Рисовал именно поэтапно что программа делает, цикл в цикле так понимаю. Саму суть и механику программы понять хотел. Все, что в книге было освещено до векторов понималось примерно такими же способами зачастую. Такое ощущение складывается, что в мозге моем как бы оперативки не хватает что-ли, чтобы немного лучше дела обстояли с обучением. Вопрос, я вообще на верном пути? Такое может быть (или так и должно быть) при изучении языков программирования?
0
wareZ1400
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 200
Записей в блоге: 15
Завершенные тесты: 2
12.04.2017, 14:12 #12
А почему вы пишите _getch(); , а не system("pause");?
0
12.04.2017, 14:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2017, 14:12
Привет! Вот еще темы с решениями:

Задание из книги Страуструпа
Здравствуйте! Я решил начать изучать программирование, конкретнее - язык C++....

пример из книги страуструпа
struct pair { char* name; // ñòðîêà int val; //...

Задачка из книги Страуструпа...
Доброго времени суток всем! Заранее благодарен за ответы и, возможные, пути...

Достаточно ли книги Страуструпа?
В общем, учу с++ по страуструпу и думаю: &quot; а хватит ли этого???&quot; . Подскажите...


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

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

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