zoukankan      html  css  js  c++  java
  • poj1578

    字符串处理麻烦题

    View Code
    //zoj1702
    #include <iostream>
    #include <string>
    using namespace std;
    
    const    int        maxlength = 2001, maxl = 100, maxc = 30;
    
    string    header, nextheader, word[maxl][maxc];
    int        lnum, cnum, csize[maxc];
    
    void init()
    {
        string    st;
        int        l = 0, c = 0, i;
    
        memset(csize, 0, sizeof(csize));
        cnum = header.length();
        while (1)
        {
            getline(cin, nextheader);
            if (nextheader[0] == '>' || nextheader[0] == '<' || nextheader[0] == '=' || nextheader[0] == '*')
                break;
            for (i = 0; i < cnum - 1; i++)
            {
                word[l][i] = nextheader.substr(0, nextheader.find("&"));
                nextheader.erase(0, nextheader.find("&") + 1);
                if (int(word[l][i].length()) > csize[i])
                    csize[i] = word[l][i].length();
            }
            word[l][cnum - 1] = nextheader;
            if (int(word[l][cnum - 1].length()) > csize[cnum - 1])
                csize[cnum - 1] = word[l][cnum - 1].length();
            l++;
        }
        lnum = l;
    }
    
    void printl(int w, string st)
    {
        int        i, l = w - st.length();
    
        cout << st;
        for (i = 0; i < l; i++)
            cout << " ";
    }
    
    void printc(int w, string st)
    {
        int        i, l = w - st.length();
    
        for (i = 0; i < l / 2; i++)
            cout << " ";
        cout << st;
        for (i = 0; i < l / 2; i++)
            cout << " ";
        if (l % 2 != 0)
            cout << " ";
    }
    
    
    void printr(int w, string st)
    {
        int        i, l = w - st.length();
    
        for (i = 0; i < l; i++)
            cout << " ";
        cout << st;
    }
    
    void printword(int i, string st)
    {
        switch (header[i])
        {
            case    '<': printl(csize[i], st); break;
            case    '=': printc(csize[i], st); break;
            case    '>': printr(csize[i], st); break;
        }
    }
    
    void print()
    {
        int        i, j;
        
        //first line
        cout << "@-";
        for (i = 0; i < cnum - 1; i++)
        {
            for (j = 0; j < csize[i]; j++)
                cout << "-";
            cout << "---";
        }
        for (j = 0; j < csize[cnum - 1]; j++)
            cout << "-";
        cout << "-@";
        cout << endl;
    
        //second line
        cout << "|";
        for (i = 0; i < cnum; i++)
        {
            cout << " ";
            printword(i, word[0][i]);
            cout << " |";
        }
        cout << endl;
    
        //third line
        cout << "|-";
        for (i = 0; i < cnum - 1; i++)
        {
            for (j = 0; j < csize[i]; j++)
                cout << "-";
            cout << "-+-";
        }
        for (j = 0; j < csize[cnum - 1]; j++)
            cout << "-";
        cout << "-|";
        cout << endl;
    
        //other lines
        for (j = 1; j < lnum; j++)
        {
            cout << "|";
            for (i = 0; i < cnum; i++)
            {
                cout << " ";
                printword(i, word[j][i]);
                cout << " |";
            }
            cout << endl;
        }
    
        //last line
        cout << "@-";
        for (i = 0; i < cnum - 1; i++)
        {
            for (j = 0; j < csize[i]; j++)
                cout << "-";
            cout << "---";
        }
        for (j = 0; j < csize[cnum - 1]; j++)
            cout << "-";
        cout << "-@";
        cout << endl;
    }
    
    int main()
    {
    //    freopen("t.txt", "r", stdin);
    //    freopen("y.txt", "w", stdin);
        getline(cin, header);
        while (header[0] != '*')
        {
            init();
            print();
            header = nextheader;
        }
        return 0;
    }
  • 相关阅读:
    【面试题】java基础(一)
    【java集合总结】-- ArrayList源码解析
    【java集合总结】-- 数组总结+自己封装数组类
    【MySQL高可用架构设计】(一)-- mysql复制功能介绍
    【Linux】-- 认识bash shell
    【ORM框架】Spring Data JPA(一)-- 入门
    【数据结构】-- 理解哈希表
    【spring】-- springboot配置全局异常处理器
    【spring】-- jsr303参数校验器
    【web安全】-- springboot实现两次MD5加密
  • 原文地址:https://www.cnblogs.com/rainydays/p/2982711.html
Copyright © 2011-2022 走看看