所以这个程序应该输入我输入的内容,并以矩阵格式输出它们,这是我到目前为止的代码:
#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;
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;
getline(cin,s);
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;
int M[N][N];
int M2[N][N];
int row, col, ROWS, COLS;
ROWS = sizeof(M) / sizeof(M[0]);
COLS = sizeof(M[0]) / sizeof(M[0][0]);
fill(s, M, 1, 1);
print(M, ROWS, COLS);
return 0;
}
任何想法为什么输出随机字符而不是我输入的那些?
答案 0 :(得分:0)
首先,在将字符串传递给fill函数之前,你没有初始化它。 接下来,您尝试将字符串插入到int中。 C ++不允许你直接这样做。
您是否尝试将诸如“123456”的字符串拆分为[1,2,3,4,5,6; 1,2,3,4,5,6; ...]等? 这是你想要你的程序吗?
答案 1 :(得分:0)
这里将输入存储在整数数组中并尝试显示字符值。
语句cout&lt;&lt;(char)M [r] [c]将为您提供与M [r] [c]的整数值对应的ASCII值。
这可能是你看到的随机字符。 您可以直接使用字符数组,并通过直接调用来尝试输出:cout&lt;&lt; M [R] [C]
答案 2 :(得分:0)
试试这个,
#include <iostream>
#include <string>
using namespace std;
#define N 6
void fill(string s, char (&arr)[N][N])
{
int char_index =0;
for (int i=0; i < N; i++)
{
for (int j=0; j < N; j++)
{
arr[i][j] = s.at(char_index);
if (char_index+1 == s.size()){
char_index =0;
}else{
char_index++;
}
}
}
}
void print(char arr[][N])
{
cout << "--------------" << endl;
int char_index =0;
for (int i=0; i < N; i++)
{
for (int j=0; j < N; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
cout << "--------------" << endl;
}
int main()
{
string s ="";
cout << "Enter your string:";
getline(cin,s);
char M[N][N];
fill(s,M);
print(M);
system("pause");
return 0;
}