現在、動的配列を使用して MU ゲームでコードを作成していますが、シーケンスの印刷に問題があります。
規則: 最初の文字が文字 M で示され、シーケンスの残りが R で示される場合、新しいシーケンスは MRR です。
例は次のとおりです。
現在のシーケンス: MIUI
新しいシーケンス: MIUIIUI
現在のシーケンス: MUM
新しいシーケンス: MUMUM
現在のシーケンス: 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
出力: MUM、この文字列の長さは 5 です (MUMUM と想定)
入力: MIUI
出力: MIUI、この文字列の長さは 7 です (MIUIIUI と想定)。
これまでに行ったことは、新しい動的配列を新しいサイズで割り当て、それに応じて配列に値を追加したことです。しかし、問題が applyRule2 関数にあるのか、printarray 関数にあるのか、私は途方に暮れています。
誰かが私を正しい方向に向けることができれば幸いです。