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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
#1

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

31.05.2013, 23:34. Просмотров 729. Ответов 10
Метки нет (Все метки)

Я ввожу слова без знаков препинания (все подряд через пробел) и нужно:
Определить, сколько слов текста имеют длину 1, 2, 3, ..., 10 и более символов, вывести эти слова в последовательности возрастания их длин. Слова очередной длины вывести с новой строки.

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

Определить, сколько слов текста из файла имеют определенную длину - C++
Добрый вечер Программа берет данные из текстового файла и должна определить сколько слов текста имеют длину 1, 2, 3, ... 10 символов и...

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

Выделить из текста все слова которые имеют длину 6 символов и начинаются на "С" - C++
Ввести текст состоящий не менее чем из 15 слов. Выделить из текста все слова которые имеют длину 6 символов и начинаются на "С"

Определить процент слов в тексте, которые имеют удвоенную согласную - C++
Определить процент слов в тексте, которые имеют удвоенную согласную. вот код: #include <iostream> #include <string.h> #include...

Список студентов. Определить, сколько среди них имеют одинаковые фамилии - C++
Задание - Текст - это список студентов . Определить , сколько среди них имеют одинаковые фамилии. Господа, спасайте. Преподаватель будет...

Задается произвольный текст, Вычислить среднюю длину слов текста и вывести ее на экран - C++
Задается произвольный текст, содержащий не более 10 строк, в каждой строке не бо-лее 80 символов. Вычислить среднюю длину слов текста и...

10
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 00:17 #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;
}
:
1
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 00:24  [ТС] #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();});
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 00:33 #4
Я даже не знаю как. Для меня это один из самых простых способов разбивки строки на слова. Предложите свои наработки/предложения.
0
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 00:37  [ТС] #5
Цитата Сообщение от yuron_477 Посмотреть сообщение
Я даже не знаю как. Для меня это один из самых простых способов разбивки строки на слова. Предложите свои наработки/предложения.
у меня нет предложений, только начинаю работать со строками, просто неполностью понимаю, но работает все прекрасно
0
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,597
01.06.2013, 01:06 #6
Можно сразу в set пихать. Толку от вектора, если сразу сортировать и выводить?
Вот так упростить можно, я бы проход по контейнерам через итераторы сделал.
А так все просто.
1
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
01.06.2013, 01:12  [ТС] #7
Цитата Сообщение от MrGluck Посмотреть сообщение
Можно сразу в set пихать. Толку от вектора, если сразу сортировать и выводить?
Вот так упростить можно, я бы проход по контейнерам через итераторы сделал.
А так все просто.
можете написать пожалуйста
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 01:43 #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;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,597
01.06.2013, 01:44 #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;
}
1
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.06.2013, 01:53 #10
MrGluck, а нельзя ли второй параметр шаблона set как то по ссылке передавать, как обычную функцию?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,597
01.06.2013, 02:03 #11
yuron_477, можно либо как указатель на функцию, либо как функциональный объект.
0
01.06.2013, 02:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 02:03
Привет! Вот еще темы с ответами:

Определить среднюю длину слов в предложении - C++
В введенном предложении определить среднюю длину слов в буквах (знаки препинания, числа и другие символы не учитывать)

Заданы два текста. Определить, можно ли получить первый текст перестановкой слов второго текста. - C++
Заданы два текста. Определить, можно ли получить первый текст перестановкой слов второго текста.

Определить количество слов в тексте и среднюю длину слова - C++
Консольное приложение Win32 Текст задачи: Дан текст, в котором слова отделяются пробелами, в конце стоит точка. Определить...

Необходимо определить длину каждой строки, определить сколько символив первой и второй строки совпадают - C++
Приветик всем)) Очень нужна помощь. Помогите решить некоторые задачи. 1. Пускай мы имеем массив 5 на 5. Необходимо отсортировать...


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

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

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