Unix is 命令,紫书P127UVa400

来源:互联网 发布:二级c语言成绩查询时间 编辑:程序博客网 时间:2024/06/04 17:56

水题一道,主要学习刘精练的写法。
1.直接用[algorithm]头文件中的max()取最长单词长度。
2.直接用[algorithm]的sort()函数直接对字符串数组按字典顺序排列。

// UVa400 Unix ls// Rujia Liu#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() {  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());    }    // 计算列数cols和行数rows     int cols = (maxcol - M) / (M + 2) + 1, rows = (n - 1) / cols + 1;    print("", 60, '-');    cout << "\n";    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, ' ');      }      cout << "\n";    }  }  return 0;}
原创粉丝点击