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

Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 - C++

Восстановить пароль Регистрация
 
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
31.05.2013, 23:34     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #1
Я ввожу слова без знаков препинания (все подряд через пробел) и нужно:
Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 и более символов, вывести эти слова в последовательности возрастания их длин. Слова очередной длины вывести с новой строки.

Пожалуйста не пишите запутание коды
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 23:34     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10
Посмотрите здесь:

C++ Заданы два текста. Определить, можно ли получить первый текст перестановкой слов второго текста.
C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину.
C++ Необходимо определить длину каждой строки, определить сколько символив первой и второй строки совпадают
C++ Определить процент слов в тексте, которые имеют удвоенную согласную
Задается произвольный текст, Вычислить среднюю длину слов текста и вывести ее на экран C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 00:17     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #2
Так?
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
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <vector>
#include <windows.h>
#include <iterator>
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    std::cout<<"Введите тект:\n:->";
    std::string text;
    std::getline(std::cin, text);
    std::istringstream iss(text);
    std::vector<std::string> words( (std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>() );
    std::sort(words.begin(), words.end(), [](const std::string& a, const std::string& b){return a.size() < b.size();});
    
    for (size_t i = 0; i<words.size(); ++i)
        std::cout<<words[i]<<" # букв "<<words[i].size()<<'\n';
            
    return 0;
}
:
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 00:24  [ТС]     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #3
Цитата Сообщение от yuron_477 Посмотреть сообщение
Так?
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
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <vector>
#include <windows.h>
#include <iterator>
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    std::cout<<"Введите тект:\n:->";
    std::string text;
    std::getline(std::cin, text);
    std::istringstream iss(text);
    std::vector<std::string> words( (std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>() );
    std::sort(words.begin(), words.end(), [](const std::string& a, const std::string& b){return a.size() < b.size();});
    
    for (size_t i = 0; i<words.size(); ++i)
        std::cout<<words[i]<<" # букв "<<words[i].size()<<'\n';
            
    return 0;
}
:
работает хорошо, но можете пожалуйста упростить етот фрагмент и без вектора сделать

C++
1
2
3
std::istringstream iss(text);
    std::vector<std::string> words( (std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>() );
    std::sort(words.begin(), words.end(), [](const std::string& a, const std::string& b){return a.size() < b.size();});
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 00:33     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #4
Я даже не знаю как. Для меня это один из самых простых способов разбивки строки на слова. Предложите свои наработки/предложения.
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 00:37  [ТС]     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #5
Цитата Сообщение от yuron_477 Посмотреть сообщение
Я даже не знаю как. Для меня это один из самых простых способов разбивки строки на слова. Предложите свои наработки/предложения.
у меня нет предложений, только начинаю работать со строками, просто неполностью понимаю, но работает все прекрасно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
01.06.2013, 01:06     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #6
Можно сразу в set пихать. Толку от вектора, если сразу сортировать и выводить?
Вот так упростить можно, я бы проход по контейнерам через итераторы сделал.
А так все просто.
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 01:12  [ТС]     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #7
Цитата Сообщение от MrGluck Посмотреть сообщение
Можно сразу в set пихать. Толку от вектора, если сразу сортировать и выводить?
Вот так упростить можно, я бы проход по контейнерам через итераторы сделал.
А так все просто.
можете написать пожалуйста
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 01:43     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #8
Не думаю что это будет вам легче:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <set>
#include <windows.h>
#include <iterator>
 
struct classcomp {
  bool operator() (const std::string& lhs, const std::string& rhs) const
  {return lhs.size() < rhs.size();}
};
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    std::cout<<"Введите тект(Ctrd+Z для прекращения):\n:->";
    std::set<std::string, classcomp> words((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
    
    for (std::set<std::string>::iterator it = words.begin(); it != words.end(); ++it)
        std::cout<<*it<<" # букв "<<(*it).size()<<'\n';
            
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
01.06.2013, 01:44     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #9
Цитата Сообщение от ChuckNorris Посмотреть сообщение
можете написать пожалуйста
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
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <set>
#include <iterator>
#include <clocale>
 
bool cmp(const std::string &lhs, const std::string &rhs)
{
    return lhs.size() < rhs.size();
}
 
typedef std::multiset<std::string,
    bool(*)(const std::string &, const std::string &)> multiset_str;
typedef std::istream_iterator<std::string> input_str;
 
int main()
{
    setlocale(LC_ALL, "");
    std::cout<<"Введите тект:\n:->";
    std::string text;
    std::getline(std::cin, text);
    std::istringstream ist(text);
    multiset_str words((input_str(ist)), input_str(), cmp);
    for (auto &word: words)
        std::cout << word << " # букв " << word.size() << std::endl;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 01:53     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #10
MrGluck, а нельзя ли второй параметр шаблона set как то по ссылке передавать, как обычную функцию?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 02:03     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10
Еще ссылки по теме:

Определить длину строки и сколько раз встречается символ в строке C++
Выделить из текста все слова которые имеют длину 6 символов и начинаются на "С" C++
Список студентов. Определить, сколько среди них имеют одинаковые фамилии C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,404
01.06.2013, 02:03     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 #11
yuron_477, можно либо как указатель на функцию, либо как функциональный объект.
Yandex
Объявления
01.06.2013, 02:03     Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10
Ответ Создать тему
Опции темы

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