The computer company you work for is introducing a brand new computer line and is developing a new Unix-like operating system to be introduced along with the new computer. Your assignment is to write the formatter for the ls function.

Your program will eventually read input from a pipe (although for now your program will read from the input file). Input to your program will consist of a list of (F) filenames that you will sort (ascending based on the ASCII character values) and format into (C) columns based on the length (L) of the longest filename. Filenames will be between 1 and 60 (inclusive) characters in length and will be formatted into left-justified columns. The rightmost column will be the width of the longest filename and all other columns will be the width of the longest filename plus 2. There will be as many columns as will fit in 60 characters. Your program should use as few rows (R) as possible with rows being filled to capacity from left to right.

Input

The input file will contain an indefinite number of lists of filenames. Each list will begin with a line containing a single integer (1 N 100). There will then be N lines each containing one left-justified filename and the entire line’s contents (between 1 and 60 characters) are considered to be part of the filename. Allowable characters are alphanumeric (a to z, A to Z, and 0 to 9) and from the following set {._-} (not including the curly braces). There will be no illegal characters in any of the filenames and no line will be completely empty.

Immediately following the last filename will be the N for the next set or the end of file. You should read and format all sets in the input file.

Output

For each set of filenames you should print a line of exactly 60 dashes (-) followed by the formatted columns of filenames. The sorted filenames 1 to R will be listed down column 1; filenames R + 1 to 2R listed down column 2; etc.

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

排好后从左开始一列一列向下打印,前面的要最大长度加2,最后一列是最大长度,总长度不大于60

题目看错,改了一万年

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iomanip>
#include<cmath>
#include<string.h>
#include<algorithm>
#define sf scanf
#define pf printf
#define pb push_back
#define mm(x,b) memset((x),(b),sizeof(x))
#include<vector>
#include<map>
//#define for(i,a,b) for(int i=a;i<b;i++)
typedef long long ll;
typedef long double ld;
const ll mod=1e9+7;
using namespace std;
const double pi=acos(-1.0);
int max(int a,int b){return a>b?a:b;} void first()
{
for(int i=0;i<60;i++)
pf("-");
pf("\n");
}
int main()
{
// f reopen("output1.txt", "r", stdin);
int n;
cout.setf(std::ios::left);
while(~sf("%d",&n))
{
// getchar(); string a[105];
int Max=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
Max=max(Max,a[i].size());
}
first();
int m=(60-Max)/(Max+2)+1;//m是确定一行多少个
int sum=n/m;//sum是多少行
int ans=n%m;//ans是最后一行多少列
int i=1,time=0,temp=0;
if(ans) sum++;
sort(a,a+n);
for(int i=0;i<sum;i++)
{
for(int j=0;j<m;j++)
{
if(j*sum+i+1>n) break;
if(j==m-1)
cout<<setfill(' ')<<setw(Max)<<a[j*sum+i];
else
cout<<setfill(' ')<<setw(Max+2)<<a[j*sum+i];
}
cout<<endl;
} }
return 0;
}

F - Unix ls的更多相关文章

  1. UVa400.Unix ls

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. UVA 400 - Unix ls (Unixls命令)

    csdn : https://blog.csdn.net/su_cicada/article/details/86773007 例题5-8 Unixls命令(Unix ls,UVa400) 输入正整数 ...

  3. UVA 400 Unix ls by sixleaves

    题目其实很简单,答题意思就是从管道读取一组文件名,并且按照字典序排列,但是输入的时候按列先输出,再输出行.而且每一行最多60个字符.而每个文件名所占的宽度为最大文件名的长度加2,除了输出在最右边的文件 ...

  4. unix ls命令

    [语法]: ls  [-RadCxmlnogrtucpFbqisf1]   [文件夹或文件......] [说明]: ls 命令列出指定文件夹下的文件,缺省文件夹为当前文件夹 ./,缺省输出顺序为纵向 ...

  5. Unix - ls命令的简要实现

    #include <dirent.h> 是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数.readdir函数. opend ...

  6. Unix ls UVA - 400

      The computer company you work for is introducing a brand new computer line and is developing a new ...

  7. 【例题5-8 UVA - 400】Unix ls

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设n个字符串中出现的最长的为len; 最后一列能容纳len个字符,然后前面的列能容纳len+2个字符. 每行最多60个字符. 按照这 ...

  8. UVa 400 (水题) Unix ls

    题意: 有n个文件名,排序后按列优先左对齐输出.设最长的文件名的长度为M,则最后一列长度为M,其他列长度为M+2. 分析: 这道题很简单,但要把代码写的精炼,还是要好好考虑一下的.lrj的代码中有两个 ...

  9. Uva - 400 - Unix ls

    先计算出最长文件的长度M,然后计算列数和行数,最后输出即可. AC代码: #include <iostream> #include <cstdio> #include < ...

随机推荐

  1. Grails 第一课

    package helloworld import org.junit.*; import java.util.*; class HelloController { def index() { //d ...

  2. mariadb multi-source replication(mariadb多主复制)

    下文一起来看看mariadb multi-source replication(mariadb多主复制)例子,希望对各位有帮助.   mariadb multi-source replication( ...

  3. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果

    大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSD ...

  4. vue设置默认地址和配送方式

    1.截图 2.address.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. 批处理命令学习笔记——Start命令

    Start 命令 启动另一个窗口运行指定的程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用. 语法:START ["title"] [/Dpath] [/I] ...

  6. Android——Android和SVN::::SVN+delete项目

    SVN使用笔记(比较详细) http://www.cnblogs.com/merray/p/4182380.html 删除项目 http://jingyan.baidu.com/article/c74 ...

  7. 【原】为DevExpress的ChartControl添加Y轴控制 和 GridControl中指定列添加超级链接

    一.控制ChartControl的Y轴范围 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件,具体代码如下: ...

  8. MUI 打包android app

    自有证书生成方法 manifest配置 (2).图标配置:所有图片格式必须是png,且严格符合分辨率要求.使用其他图片格式重命名为png会导致打包失败.配置图标时选择自动生成所有适用图标,选择一个大图 ...

  9. C++ 智能指针四

    /* 智能指针enable_shared_from_this模板类使用 */ #include <iostream> #include <string> #include &l ...

  10. android:onClick都做了什么

    同步发表于 http://avenwu.net/viewinject/2015/01/28/android_onclick/ 相信大家都知道在layout里面可以给view写android:onCli ...