2020年3月20日 星期五

2.1-Print_Standard_Format - lab

解題心得:
資料可分為三類,分別為名字、薪水、獎金。雖然後兩者實際上為數字,不過直接當字串處理比較方便。
在使用迴圈讀取資料時,就分別用三個變數紀錄最長長度。
話說同學用vector,知道我直接開三個長度1000的array吐槽說解法很暴力XD

字串固定長度使用: setw(n)
數字設定精度使用:fixed << setprecision(n) << string


程式碼:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main() {
 int n;
 string names[1000], salary[1000], award[1000];
 while (cin >> n)
 {
  int nameLength = 0, salaryLength = 0, awardLength = 0;
  for (int i = 0; i < n; i++)
  {
   cin >> names[i] >> salary[i] >> award[i];
   if (names[i].size() > nameLength)
    nameLength = names[i].size();
   if (salary[i].size() > salaryLength)
    salaryLength = salary[i].size();
   if (award[i].size() > awardLength)
    awardLength = award[i].size();
  }
  for (int i = 0; i < n; i++)
  {
   cout << setw(nameLength) << names[i] << "|  "
    << setw(salaryLength) << salary[i] << "|  "
    << setw(awardLength) << award[i] << endl;
  }
  
 }
    return 0;
}

沒有留言:

張貼留言