2020年3月29日 星期日

3.2-RowTranspositionCipher-Lab

解題心得:
記得stringstream使用要初始化.....抓好久這個bug.......

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

int main() {
 string plaintext;
 stringstream ss;
 while (getline(cin, plaintext))
 {
  int temp, row = 0;
  vector<int> key;
  string s;
  ss.clear();
  ss.str("");
  getline(cin, s);
  ss << s;
  while (ss >> temp) // get each key
  {
   key.push_back(temp);
   row++;
  }
  char array[10000][10000] = { '\0' };
  for (int i = 0; i < plaintext.size(); i++) // replace the data
  {
   if (plaintext[i] == ' ')
    array[i % row][i / row] = '_';
   else
    array[i % row][i / row] = plaintext[i];
  }
  for (int i = 0; i < row; i++)
  {
   for (int j = 0;; j++)
   {
    if (array[key[i]][j] != '\0')
     cout << array[key[i]][j];
    else
     break;
   }
  }
  
  //for (int i = 0; i < row; i++) // for test
  //{
  // for (int j = 0; j < row; j++)
  //  cout << array[i][j];
  // cout << endl;
  //}
  cout << endl;
 }
 return 0;
}

沒有留言:

張貼留言