• Unix is 命令


    输入正整数n以及n个文件名,排序后按列优先的方式左对齐输出。假设最长文件名有M字符,则最右列有M字符,其他列都是M+2字符。

    附加条件每行最多输出60个字符,在此条件下要求行最少。

    Sample input

    10
    tiny
    2short4me
    very_long_file_name
    shorter
    size-1
    size2
    size3
    much_longer_name
    12345678.123
    mid_size_name
    12
    Weaser
    Alfalfa
    Stimey
    Buckwheat
    Porky
    Joe
    Darla
    Cotton
    Butch
    Froggy
    Mrs_Crabapple
    P.D.
    19
    Mr._French
    Jody
    Buffy
    Sissy
    Keith
    Danny
    Lori
    Chris
    Shirley
    Marsha
    Jan
    Cindy
    Carol
    Mike
    Greg
    Peter
    Bobby
    Alice
    Ruben

    Sample output

    ------------------------------------------------------------
    12345678.123         size-1               
    2short4me            size2                
    mid_size_name        size3                
    much_longer_name     tiny                 
    shorter              very_long_file_name  
    ------------------------------------------------------------
    Alfalfa        Cotton         Joe            Porky          
    Buckwheat      Darla          Mrs_Crabapple  Stimey         
    Butch          Froggy         P.D.           Weaser         
    ------------------------------------------------------------
    Alice       Chris       Jan         Marsha      Ruben       
    Bobby       Cindy       Jody        Mike        Shirley     
    Buffy       Danny       Keith       Mr._French  Sissy       
    Carol       Greg        Lori        Peter



    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    const int maxcol=60;
    const int maxn=100+5;
    string filenames[maxn];
                                                  //输出字符串s,长度不足len时补字符extra
    void print(const string&s,int len,char extra)
    {
        cout<<s;
        for(int i=0;i<len-s.length();i++)cout<<extra;
    }
    int main()
    {
        while(1){
            int n;
            while(cin>>n){
                int m=0;
                for(int i=0;i<n;i++){
                    cin>>filenames[i];
                    m=max(m,(int)filenames[i].length());      //stl中的max,传入两个参数,返回最大值
                }
                                   //计算列数cols和行数rows
                int cols=(maxcol-m)/(m+2)+1,rows=(n-1)/cols+1;
                print("",60,'-');           //调用函数,输出60个‘-’
                cout<<endl;
                sort(filenames,filenames+n);                //字典序排列
                for(int r=0;r<rows;r++){
                    for(int c=0;c<cols;c++){                     //顺序竖着看,但要横行输出
                        int idx=c*rows+r;
                        if(idx<n)print(filenames[idx],c==cols-1?m:m+2,' ');            //最后一列m个字符,其余m+2个字符
                    }
                    cout<<endl;
                }
            }
        }
        //system("pause");
        return 0;
    }


  • 相关阅读:
    [Python] from scipy import sparse 报 DLL load failed:找不到指定模块错误
    LPC43xx系列使用IAP的注意事项
    SecureCRT中设置 为回车换行,和 的行为一致
    GSM07.10协议中串口复用的注意事项
    Lua在单片机中的移植
    ALINX公众号
    黑金博客搬家了
    2014年黑金FPGA原创教程规划发布
    【黑金原创教程】【FPGA那些事儿-驱动篇I 】连载导读
    【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/5254896.html
Copyright © 2020-2023  润新知