这个程序应该向控制台输出一个我输入的字母串,例如,如果我输入“im hungry”然后它应该输出即时输出到控制台的矩阵,如果我输入的东西太长了,然后它会延续到矩阵的下一行
这是我到目前为止的代码:
#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;
}
而不是输出我输入的内容,它会不断输出一个随机字符矩阵(无论我输入什么内容)都有关于如何解决此问题的建议?
答案 0 :(得分: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
字符将其拆分为不同的行。