2013-10-09 63 views
0
int main() { 
    int k=0; 
    string s; 
    cout<<"string "; 
    getline(cin,s); 
    float n=s.size(); 


    vector< vector<string> > vec(n>8?floor((sqrt(n))):3, vector<string>(n>8?ceil((sqrt(n))):3)); 



    for(int i=0;n>8?i<floor((sqrt(n))):i<3;i++) 
    { 
     for(int j=0;n>8?j<ceil((sqrt(n))):j<3;j++) 
     { 
      if(k<s.size()) 
      { 
       vec[i][j]=s[k]; 
       k++; 
      } 
     } 
    } 



     for(int j=0;n>8?j<ceil((sqrt(n))):j<3;j++) 
     { 

    { 
     for(int i=0;n>8?i<floor((sqrt(n))):i<3;i++) 

      cout<<vec[i][j]; 

    }cout<<" "; 
     } 

我正在研究一個加密程序,我想製作一個矢量(使用它的第一次),它的大小應該受用戶輸入的影響。我如何實現它?根據用戶輸入不同大小的矢量

+1

哦,小子!我不確定加密程序是否需要從頭開始!抱歉! – Grzegorz

+0

'if(n == 6 || 7 || 8)'很可能沒有做出任何遠遠接近你想象的事情......而且,你在'if'語句中聲明的變量超出了範圍(並因此消失)後立即'if語句完成... – twalberg

+0

@Grzegorz哈哈,我可能會有點領先於我自己。我試圖安排一個輸入字符串矩陣形式約束[(floor(sqrt (string length))<= width,height <= ceil(sqrt(str len)))]。一切工作正常,直到用戶輸入的大小是8或43等。我知道我使用的邏輯有問題。 – Angersmash

回答

0

我不確定你想要做什麼,但你可以使用rand()函數來隨機化向量的大小。我寫了示例代碼,但你應該爲你調整它的目的。

int maxSize1 = 10; 
int maxSize2 = 15; 


std::vector<string> s; 
s.push_back("A"); 
s.push_back("B"); 
s.push_back("C"); 
s.push_back("D"); 



srand(time(NULL)); 
int size1 = rand() % maxSize1 + 1; 
int size2 = rand() % maxSize2 + 1; 
std::vector< std::vector<string> > vec(size1, std::vector<string>(size2)); 

cout << "vector sizes " << size1 << " " << size2 << endl; 

for(int i=0,k = 0;i<size1;i++) 
{ 
    for(int j=0;j<size2;j++) 
    { 
     if(k < s.size()) 
     { 
      vec[i][j]=s[k]; 
      k++; 
     } 

     cout << "" << vec[i][j] << ","; 
    } 
    cout << "\n"; 
} 
+0

對不起,我的查詢不清楚,但是這是我如何實現它。 – Angersmash