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

Переставить слова в строке в порядке убывания количества цифр в них - C++

Восстановить пароль Регистрация
 
volk
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 15
25.06.2014, 18:22     Переставить слова в строке в порядке убывания количества цифр в них #1
Дан текст. Слова в строках переставить в порядке убывания количества цифр в них.

как можно реализовать, подскажите пожалуйста. Хотя бы идейно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 18:22     Переставить слова в строке в порядке убывания количества цифр в них
Посмотрите здесь:

C++ вывести слова строки в порядке убывания ее длины
C++ Переставить строки в порядке убывания сумм элементов
C++ Вывести все слова строки в порядке убывания
C++ Вывести слова строки в порядке убывания числа букв в них
C++ Упорядочить массив в порядке убывания суммы цифр элементов
Расположить слова в строке в порядке возрастания количества символов в них C++
Сортировка слов в строке в порядке убывания их длины C++
Удалить из массива числа из одинаковых цифр и упорядочить в порядке убывания их сумм C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
25.06.2014, 19:10     Переставить слова в строке в порядке убывания количества цифр в них #2
volk, мне кажется, самый короткий путь это с помощью регулярок выцепить слова и число цифр в них, ну а затем просто отсортировать по числу цифр.

Добавлено через 23 минуты
примерно так:
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
#include <regex>
#include <iterator>
#include <iostream>
#include <string>
#include <list>
 
using namespace std;
 
typedef struct
{
    string text;
    int count;
} list_item;
 
 
int main()
{
    const string s = "Quick1 brown234 fox23.";
 
    regex words_regex("\\b\\S+?(\\d*)\\b");
    auto words_begin = sregex_iterator(s.begin(), s.end(), words_regex);
    auto words_end = sregex_iterator();
 
    cout << "Found "
        << distance(words_begin, words_end)
        << " words:\n";
 
    list<list_item> result;
    for (sregex_iterator i = words_begin; i != words_end; ++i) {
        smatch match = *i;
        string match_str = match.str();
 
        list_item item;
        item.text = match_str;
        item.count = match[1].length();
        result.push_back(item);
    }
 
    result.sort([](list_item a, list_item b) -> bool {return a.count < b.count; });
 
    for_each(result.begin(), result.end(), [](list_item item){cout << item.text << '\t' << item.count << '\n'; });
}
Yandex
Объявления
25.06.2014, 19:10     Переставить слова в строке в порядке убывания количества цифр в них
Ответ Создать тему
Опции темы

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