2013-03-22 3 views
0

이 프로그램은 내가 "배가 고픈"다음에 배가 고픈 배가 고픈 메시지를 입력하는 것과 같이 내가 입력하는 문자의 문자열을 콘솔에 출력한다고 가정합니다. 내가 입력 뭔가 후 너무 긴 경우에 대한 매트릭스에서 콘솔, 그것은을 heres 코드가 지금까지 가지고있는 매트릭스당신이 그들을 입력 할 때 문자열을 출력하는 방법

의 다음 라인에 전달 :

#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

+2

와우, 코드는 동일합니다 ... –

+0

'M','ROWS' 및'COLS'는 모두'main()'에서 초기화되지 않았습니다. 'ROWS'와'COLS' 매개 변수에 대해서만'fill()'을 1 번 전달한 후 초기화되지 않은'M' 배열을 출력합니다. [Good C++ Book] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)을 제안 할 수 있습니까? – Blastfurnace

답변

0

당신은 간단하게 할 수 있습니다 문자열을 가지고 그것을 인쇄, 케이스에 한계 아래, 또는 endl 서로 다른 라인으로 분할됩니다

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; 
    } 
} 

숯.

관련 문제