这题的需要注意的地方就是计算行数与列数,以及输出的控制。

题目要求每一列都要有能够容纳最长文件名的空间,两列之间要留两个空格,每一行不能超过60。

简单计算下即可。

输出时我用循环输出空格来解决对齐的,其实可以用一个很巧妙的方法,用printf("%-*s", k, file[i]),查过资料后发现*放到转换字符之间可以当作替代符,后面可以输入一个变量(如k)来控制,这句代码意思是输出左对齐(对应负号)的宽度为k(对应*)的字符串file[i]。

代码:

#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;
const int maxn = 101;
int n; int main() {
string file[maxn];
int cmax;
while (scanf("%d", &n) != EOF) {
printf("------------------------------------------------------------\n");
cmax = 0;
for (int i = 0; i < n; i++) {
cin >> file[i];
cmax = max(cmax, (int)file[i].size());
}
int col = 62 / (cmax + 2);
int row = ceil(1.0 * n / col);
sort (file, file + n);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
// printf("%s", file[i * row + j]);
int t = j * row + i;
if (t >= n)
continue;
cout << file[t];
int k = cmax - file[t].size();
while (k--)
printf(" ");
if (j != col - 1)
printf(" ");
}
if (i <= row - 1)
printf("\n");
}
}
return 0;
}

uva 400 Unix ls 文件输出排版 排序题的更多相关文章

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

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

  2. UVA 400 Unix ls by sixleaves

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

  3. Uva - 400 - Unix ls

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

  4. UVa - 1593 Unix ls(STL)

    给你一堆文件名,排序后按列优先的方式左对齐输出. 假设最长文件名长度是M,那么每一列都要有M+2字符,最后一列有M字符. inmanip真NB..orz #include <iostream&g ...

  5. UVa 400 Unix Is

    题意:给出n个字符串,按照字典序排列,再按照规则输出. ===学习的紫书,题目意思很清楚,求列数和行数最开始看的时候木有看懂啊啊啊 列数:即为(60-M)/(M+2)+1;即为先将最后那一列减去,算普 ...

  6. UVa 400 Unix Is命令

    简单题 #include <bits/stdc++.h> using namespace std; const int maxn=110; string s[maxn]; int main ...

  7. UVa400.Unix ls

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

  8. linux_常用命令_(ls, lsof,nslookup)_查看文件按照时间排序

    平时收集些用到的命令 方便使用 1:  ls -lrt 按时间排序  展示 2:nslookup  查看dns解析 3:lsof -p 进程号 lsof `which httpd` //那个进程在使用 ...

  9. ls命令输出的文件颜色

    ls的输出颜色不止3种,有以下几种,白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其他文件 这是l ...

随机推荐

  1. redis 持久化的两种方式

    一:快照模式 或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是SNAPSHOTTING模式,还是一种是AOF模式,而且在实战场景下用的最多的 莫过于SNAPSHOTTING模 ...

  2. 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)

    目录 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) Http协议简述 HttpRequest类设计 请求部分 接收部分 关于上传和下载 Cpp实现 关于源码中的Lo ...

  3. MyBatis 从浅入深 随笔整理

    MyBatis? archetypeCatalog = internal 本文档单独出现的_parameter都标识为变量名 一.三个基本要素: 核心接口和类 MyBatis 核心配置文件 SQL映射 ...

  4. supervisor Error: Another program is already listening

    Error: Another program is already listening on a port that one of our HTTP servers is configured to ...

  5. [HDU4348]To the moon(主席树+标记永久化)

    学可持久化treap的时候才发现自己竟然没写过需要标记下传的主席树,然而现在发现大部分操作都可以标记永久化,下传会增大占用空间. 这题一种写法是和普通的线段树一样标记下传,注意所有修改操作(包括put ...

  6. javaSrript_数据类型(2017-03-15)

    一.综述 javaScript中的数据类型分为两类: 基本类型: undefined:未定义.当声明变量却没有赋值时会显示该值.可以为变量赋值为undefined null:空.无.表示不存在,当为对 ...

  7. Codeforces 986D Perfect Encoding FFT

    题意: 给定一个数n,选出m个数使得 $\Pi_{i=1}^m a_i\ge n$,求$\sum_{i=1}^m a_i$的最小值 ,其中$m$的大小不限 $n$的长度$\le 10^6$ 简单的计算 ...

  8. 喵哈哈村的魔法考试 Round #7 (Div.2) 题解

    喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为 ...

  9. Oracle绝对值函数

    1.绝对值:abs() select abs(-2) value from dual; 2.取整函数(大):ceil() select ceil(-2.001) value from dual;(-2 ...

  10. [Deepin 15] 编译安装 PHP-5.6.30

    先看下历史笔记: Ubuntu 14 编译安装 PHP 5.4.45 + Nginx 1.4.7 + MySQL 5.6.26 笔记 ################################# ...