word triangles by junfeng

#include <iostream>\x0d
#include <vector>\x0d
#include <string>\x0d
\x0d
void print(const std::string &s, size_t i) {\x0d
    size_t len = s.length();\x0d
    size_t space_count = i < len ? i : len;\x0d
    for(size_t j = 0; j < space_count; ++j)\x0d
        std::cout << " ";\x0d
    if (space_count < len)\x0d
        std::cout << s.c_str() + i;\x0d
}\x0d
int main()\x0d
{\x0d
    using namespace std;\x0d
    vector<string> words;\x0d
\x0d
    size_t max_len = 0;\x0d
\x0d
    while(true)\x0d
    {\x0d
        string s;\x0d
        cin >> s;\x0d
        if (!cin)\x0d
            break;\x0d
        string t(s);\x0d
        if (max_len < t.length())\x0d
            max_len = t.length();\x0d
        words.push_back(t);\x0d
    }\x0d
\x0d
    for (size_t i=0; i < max_len; ++i)\x0d
    {\x0d
        vector<string>::const_iterator start = words.begin();\x0d
        print(*start, i);\x0d
        for(start = start + 1; start != words.end(); ++start)\x0d
        {\x0d
            cout << " ";\x0d
            print(*start, i);\x0d
        }\x0d
        cout << endl;\x0d
    }\x0d
    return 0;\x0d
}\x0d

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page