我目前正在使用动态数组在 MU 游戏上编写代码,但在打印序列时遇到了问题。
规则:如果第一个字符用字符 M 表示,序列的其余部分用 R 表示,则新序列是 MRR。
示例包括:
当前序列:MIUI
新序列:MIUIIUI
当前序列:MUM
新序列:妈妈
当前序列:MU
新序列:MUU
以下是我的代码片段:
主要:
if (userchoice == 2)
{
if (rule2valid == false)
{
cout << "This rule may not be applied to your input." << endl;
return 0;
}
int newsize = size + size - 1;
char *resultant = new char[newsize];
resultant = applyRule2(userinput, size);
printarray (resultant, newsize);
}
在应用规则的函数中:
char *applyRule2(char* sequence, int size)
{
int newsize = size + size - 1;
int j = 1;
char* applyRule = new char[newsize];
for (int i = 0; i < size; i++)
applyRule[i] = sequence[i];
for (int i = size; i < newsize; i++)
{
applyRule[i] == sequence[j];
}
return applyRule;
}
和打印功能:
void printarray(char* sequence, int size)
{
for (int i = 0; i < size; i++){
cout << sequence[i] << "\t";
}
cout << "The length of this array is : " << size;
cout << endl;
}
问题是当我运行程序时,我的输出是这样的:
输入:妈妈
输出:MUM,这个字符串的长度是5。(应该是MUMUM)
输入:MIUI
输出:MIUI,这个字符串的长度是7。(应该是MIUIIUI)
到目前为止,我所做的是分配了一个具有新大小的新动态数组,并相应地将值添加到数组中。但是,我不知道问题出在 applyRule2 函数还是 printarray 函数中。
如果有人能指出我正确的方向,将不胜感激。