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;
    }
  • 相关阅读:
    SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
    浅谈数据库索引
    移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
    http协议学习系列
    隐藏帧技术
    第2章:标准输入与输出
    第1章:认识Shell脚本
    Cisco配置单臂路由及静态路由
    Cisco交换机端口聚合(EtherChannel)
    Cisco配置VLAN+DHCP中继代理+NAT转发上网
  • 原文地址:https://www.cnblogs.com/rainydays/p/2982711.html
Copyright © 2011-2022 走看看