zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    oracle数据库的连接
    HIVE参数
    HIVE架构
    Linux文件系统
    Java 初学者笔记 接口与模板设计模式
    sql初学者笔记 语法基础
    JS初学者笔记 变量||语法||操作符
    CSS ul配合visibility 实现隐藏显示菜单栏
    JAVA 包装类 初学者
    盒模练习及margin叠加
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/5254896.html
Copyright © 2011-2022 走看看