我需要转换当前使用两个函数的代码来创建一个字符2D数组到一个创建字符2D数组的函数。
数组的内容是从'A'到'Y'的字母表(省略'Z',因为我需要一个5 * 5大小的矩阵)。注意:我不能使用向量或指针。
以下代码有效,但需要将其转换为一个函数,我在这方面遇到了相当大的麻烦。我一直在研究,但我找不到足够清晰的解决方案,而且我是C ++的初学者。
// Fills 4-Square Matrix 1 with Alphabet (1D Array)
void fill4Square1(char* FourSquare_1_Matrix)
{
int n;
for (n = 0; n < 25; n++)
FourSquare_1_Matrix[n] = 'A' + n;
}
// Fills 4-Square Matrix 1 with Alphabet (2D Array)
void fill4Square1_1()
{
char FourSquare_1_Matrix[5][5];
fill4Square1((char*)FourSquare_1_Matrix); //Function Call for 1D Array
for (int row = 0; row < 5; row++) //For Loop puts 1D array into 2D Array
{
for (int col = 0; col < 5; col++)
cout << FourSquare_1_Matrix[row][col] << " ";
cout << "\n";
}
}
我写了下面的代码,但是我无法将1D数组的内容放到2D数组中。 2D数组正在填充随机字符。 Program OUTPUT
void PlayFairMatrix1()
{
int i = 0;
char Matrix[25] = { {0} };
char PlayFairMatrix[5][5] = { {0} };
int n;
//1D Matrix
for (i = 0; i < 25; i++)
{
Matrix[i] = 'A' + i;
cout << Matrix[i];
}
cout << "\n";
cout << " " << endl;
////2D Matrix
for (int row = 0; row < 5; row++)
{
for (int col = 0; col < 5; col++)
{
PlayFairMatrix[row][col] = Matrix[i];
i++;
}
cout << PlayFairMatrix << " ";
cout << "\n";
}
cout << " " << endl;
}
任何人都可以帮我指点正确的方向吗?
答案 0 :(得分:0)
问题出在这一行PlayFairMatrix[row][col] = Matrix[i];
i
以前一循环中的值25开始。而你永远不会将它重置为0。
因此,解决它的最简单方法是在第二个循环之前添加i = 0;
。
另一种方法是使用row和col访问Matrix
,但我会将此作为练习留给您。
此外,当您打印PlayFairMatrix
时,您没有使用索引访问它,因此您将打印指针。您应该将cout << PlayFairMatrix << " ";
放入内部循环并添加索引,因此它变为cout << PlayFairMatrix[row][col] << " ";
答案 1 :(得分:0)
在填充PlayFairMatrix时,您忘记重新初始化变量module
。这将修复您的代码。
但你可以简单地完成以下工作
i = 0