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

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

Войти
Регистрация
Восстановить пароль
 
volk
1 / 1 / 0
Регистрация: 22.05.2014
Сообщений: 15
#1

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

25.06.2014, 18:22. Просмотров 405. Ответов 1
Метки нет (Все метки)

Дан текст. Слова в строках переставить в порядке убывания количества цифр в них.

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

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5763 / 4711 / 622
Регистрация: 10.07.2011
Сообщений: 14,188
Записей в блоге: 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     Переставить слова в строке в порядке убывания количества цифр в них
Ответ Создать тему
Опции темы

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