2013-03-22 135 views
0

這個程序應該輸出到控制檯輸入的字符串,例如,如果我輸入「im餓了」,那麼它應該輸出即時消息飢餓到控制檯在一個矩陣,如果有什麼我輸入過長則延續到矩陣如何在輸入字符串時輸出字母

的下一行繼承人的代碼,我到目前爲止:

#include <iostream> 
#include <string> 

using namespace std; 
#define N 6 

// 
// fill: 
// 
void fill(string s, int M[][N], int ROWS, int COLS) 
{ 
    int i, r, c; 
    s= "x"; 

    for (i=0, r=0; r < ROWS; r++) 
    { 
     for (c=0; c < COLS; c++) 
     { 
      M[r][c] = s[i]; // store ith character into matrix: 

      i++; // next character: 
      if (i == s.length()) // start-over if that was last char: 
      i = 0; 
     } 
    } 
} 

void print(int M[][N], int ROWS, int COLS) 
{ 
    string s; 
    s= "x"; 
    int r, c; 
    for(r=0; r< ROWS; r++) 
    { 
    for(c=0; c < COLS; c++) 
    { 
     cout<<(char)M[r][c]; 
    } 

cout <<endl; 
    } 
} 

// 
// main: 
// 
int main() 
{ 
    string s; 
    getline(cin,s); 
    int M[N][N]; 
    int M2[N][N]; 
    int row, col, ROWS, COLS; 
    fill(s, M, 1, 1); 
    print(M, ROWS, COLS); 

return 0; 
} 

,而不是輸出什麼,我鍵入,它不斷輸出一個隨機字符矩陣(無論我輸入什麼都一樣)有關我如何解決這個問題的任何建議?

+2

你真的需要矩陣嗎? – Shoe 2013-03-22 17:39:09

+2

哇,代碼是相同的...... – 2013-03-22 17:43:44

+0

'M','ROWS'和'COLS'都在'main()'中未初始化。你只傳遞1給'ROWS'和'COLS'參數的'fill()',然後打印尚未初始化的'M'數組。我可以提出一個[良好的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? – Blastfurnace 2013-03-22 17:45:49

回答

0

如果你並不真正需要的矩陣,你可以簡單地說:

void print(string s, int limit, char endl = '\n') { 
    if (limit == 0) return; 
    if (s.length > limit) { 
     for (int i = 0; i < s.length; i++) { 
      std::cout << s[i]; 
      if (i % limit == 0) 
       std::cout << endl; 
    } else { 
     std::cout << s; 
    } 
} 

將於字符串,並打印出來,在情況下,它下面的限制,或將其分成不同的線路與endl焦炭。