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

Подсчет числа слов во введенных данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает программа, моделирующая работу стека http://www.cyberforum.ru/cpp-beginners/thread1508691.html
#include<iostream> using namespace std; const int MAX=10; ////////////////////////////// class stack { private: int st; int top; public:
C++ Пропуск условия if внутри switch В общем я как-то подвис, и не могу взять в толк в чем проблема.В свитче по сути if должен же работать. Помогите по возможности :) Собственно укороченная тест версия. #include "stdafx.h" ... http://www.cyberforum.ru/cpp-beginners/thread1508655.html
Как компилятор узнаёт о размере массива при выполнении операции delete? C++
Такой глупый вопрос появился при изучении операций new и delete. Я создаю указатель на массив int с помощью операции new. int size; cin>>size; int* pointer; pointer = new int; Затем, после...
Вынос класса в отдельный файл C++
Использую MS VS 2013 Ultimate Учусь программировать, решил попробовать написать морской бой. Решил создать класс игрока, в котором бы хранились поля, имена и т.д. Спустя время класс немножко...
C++ Что значит "в поле шириной 10 символов"? http://www.cyberforum.ru/cpp-beginners/thread1508581.html
Объясните пожалуйста, что значит в поле с шириной в 10 символов? И почему у меня показывает число с 3 знаками после запятой? Полностью задание звучит так: Расчет 2,5 в степени 3 с использованием...
C++ Нужна переменная или функция которая показывает текущую нагрузку на интернет Нужна переменная или функция которая показывает текущую нагрузку на интернет(приём). Не подскажете библиотеку и функцию непосредственно?Или скажите как этого можно добиться вообще. Заранее спасибо.С... подробнее

Показать сообщение отдельно
Martein
Оператор ЭВМ 6 разряда
674 / 85 / 13
Регистрация: 22.06.2014
Сообщений: 177
03.08.2015, 18:53
Вот мой велосипед на std::vector и std::set, но вариант с std::map конечно гораздо гораздее:
C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
 
int main()
{
    std::string str;
 
    std::cout << "Enter your string: ";
    std::vector<std::string> stringVec;
    while (std::cin >> str) {
        stringVec.push_back(str);
    }
 
    std::cin.clear();
    std::cout << "Enter words: ";
    std::set<std::string> setOfWords;
    while (std::cin >> str) {
        setOfWords.insert(str);
    }
 
    std::vector<int> countWords(setOfWords.size(), 0);
 
    size_t i = 0;
    for (std::set<std::string>::iterator it_set = setOfWords.begin(); it_set != setOfWords.end(); ++it_set, ++i) {
 
        std::vector<std::string>::iterator it_vec = stringVec.begin();
 
        while (it_vec != stringVec.end()) {
 
            it_vec = std::find(it_vec, stringVec.end(), *it_set);
 
            if (it_vec != stringVec.end()) {
                ++countWords[i];
                ++it_vec;
            }
        }
    }
 
    i = 0;
    for (std::set<std::string>::iterator it_set = setOfWords.begin(); it_set != setOfWords.end(); ++it_set, ++i) {
        std::cout << *it_set << " - " << countWords[i] << " times.\n";
    }
 
    return 0;
}

И то же самое, но с применением C++11
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
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
 
int main()
{
    std::string str;
    std::cout << "Enter your string: ";
    std::vector<std::string> stringVec;
   
    while (std::cin >> str) {
        stringVec.push_back(str);
    }
    std::cin.clear();
   
    std::cout << "Enter words: ";
    std::set<std::string> setOfWords;
    while (std::cin >> str) {
        setOfWords.insert(str);
    }
   
    std::vector<int> countWords(setOfWords.size(), 0);
    size_t i = 0;
    for (auto str : setOfWords) {
        auto it = stringVec.begin();
        while (it != stringVec.end()) {
            it = std::find(it, stringVec.end(), str);
            if (it != stringVec.end()) {
                ++countWords[i];
                ++it;
            }
        }
        ++i;
    }
    i = 0;
    for (auto str : setOfWords) {
        std::cout << str << " - " << countWords[i] << " times.\n";
    }
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru