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

Вывести слова в обратном порядке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Невозможно обратиться к protected член, объявленному в классе "Counter" http://www.cyberforum.ru/cpp-beginners/thread1232631.html
typedef unsigned int uint; class Counter { protected: uint count; Counter() : count(0) { } Counter(int c) :...
C++ Апишите программу которая может перечислять членов ордена по действительным именам по должностям 4.Вступив в Благотворительный орден программистов(Benevolent Order of Programmers- BOP), вы можете быть известны на собраниях ВОР под своим действительным именем, по названию должности или по... http://www.cyberforum.ru/cpp-beginners/thread1232611.html
Создание объекта в области памяти C++
Не могу разобраться с таким вопросом. Пусть есть у нас класс Example (у него есть стандартный конструктор и неважно что он делает). и имеется следующая функция: void foo(){ ...
C++ Как сделать преобразование в string для своего класса
есть 2 строчки кода Var a = "dfsfdfd"; string b = (string)a; в класса есть перегруженный оператор operator string (); но компилятор на него не реагирует и тупо не хочет компилировать, сразу...
C++ Требуется собрать кучу object в один контейнер и искать их по object_name http://www.cyberforum.ru/cpp-beginners/thread1232574.html
Пусть дана структура вида: struct object { object(const std::string&_object_name):object_name(_object_name){} bool operator<(const object&o)const{return object_name<o.object_name;} ...
C++ Нужно продублировать первое чётное число в односвязном списке Написал вот такой код, он рабочий, но никак не пойму, что нужно сделать, чтоб выполнялась поставленная задача. Прошу помочь. #include "stdafx.h" #include <iostream> #include <string.h> #include... подробнее

Показать сообщение отдельно
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
23.07.2014, 20:14
Результат:
Вывести слова в обратном порядке

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <string>
#include <vector>
#include <conio.h>
 
using namespace std;
 
class StringUtils {
public:
 
    //Разделяет содержимое вектора разделителями
    static vector<vector<string>> split(vector<string> data, string delimiters) {
        vector<vector<string>> result;
        for (int i = 0; i < data.size(); i++) {
            result.push_back(split(data[i], delimiters));
        }
        return result;
    }
 
    //Разделяет строку на части разделителями (delimiters)
    static vector<string> split(string values, string delimiters) {
        vector<string> parts;
 
        string::size_type lastPos = values.find_first_not_of(delimiters, 0);
        string::size_type pos = values.find_first_of(delimiters, lastPos);
        while (string::npos != pos || string::npos != lastPos) {
            parts.push_back(values.substr(lastPos, pos - lastPos));
            lastPos = values.find_first_not_of(delimiters, pos);
            pos = values.find_first_of(delimiters, lastPos);
        }
 
        return parts;
    }
 
    //Объединяет вектор в строку с разделителем 
    static string combine(vector<string> data, string delimiter) {
        string result = "";
        for (int i = 0; i < data.size(); i++) {
            result += data[i] + ((i < data.size() - 1) ? delimiter : "");
        }
        return result;
    }
 
    //Объединяет содержимое вектора в в строки
    static vector<string> combine(vector<vector<string>> data, string delimiter) {
        vector<string> result;
        for (int i = 0; i < data.size(); i++) {
            result.push_back(combine(data[i], delimiter));
        }
        return result;
    }
 
    //Главная функция инвертирования текста
    static string inverse(string text) {
        
        //Разбор строки на вектор предложений (а предложения, в свою очередь, векторы слов)
        vector<vector<string>> data = split(split(text, "."), " ");
        
        //Вся магия
        //Перебор каждого предложения
        for (int i = 0; i < data.size(); i++) {
 
            //Перебор каждого слова в предложении до середины
            for (int j = 0; j < data[i].size() / 2; j++) {
                
                //Перестановка слов
                string temp = data[i][j];
                data[i][j] = data[i][data[i].size() - j - 1];
                data[i][data[i].size() - j - 1] = temp;
            }
        }
 
        //Возвращается готовая строка
        return combine(combine(data, " "), ". ") + ".";
    }
};
 
 
void main() {
    cout << StringUtils::inverse("Some text. Inverted. Bla bla. Wow its inverted string. Some some TEXT.");
    _getch();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru