0

该程序应该向控制台输出我输入的一串字母,例如,如果我输入“我饿了”,那么如果我输入的内容太长,它应该以矩阵的形式将我饿了输出到控制台然后它延续到矩阵的下一行

这是我到目前为止的代码:

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

它没有输出我输入的内容,而是不断输出一个随机字符矩阵(无论我输入什么都一样)关于如何解决这个问题的任何建议?

4

1 回答 1

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

它将获取字符串并打印它,以防它低于限制,或者使用endlchar 将其拆分为不同的行。

于 2013-03-22T17:44:24.857 回答