だから私はアルゴリズムの理解に取り組んでいて、インターネットでそのアルゴリズムの C++ コードを見つけましたが、問題は、Java は知っていますが、C++ にはあまり慣れていないため、理解するのに苦労していることです。特にこの部分:
int m, i, j, len;
char temp[50];
char stuff[100][100];
while(scanf("%d",&m)!=EOF)
{
while(m--)
{
scanf("%s",temp);
len = strlen(temp);
for(i=0;i<=len;i++)
for(j=0;j<=len;j++)
memset(stuff[i][j],0,sizeof(char)*4);
}
}
わかりましたので、ここで私が理解していない部分について考えています。私が正しい軌道に乗っているかどうか誰かが教えてくれたら、とても感謝しています。
while(scanf("%d",&m)!=EOF)
この部分については、入力ファイルなどはなく、m は初期化されていないためです。EOF charがコンソールに表示されるまで、intまたはdoubleのユーザー入力を受け入れることを意味すると考えています。その入力は m として保存されます。私はwhileループについて混乱しています。何か進行中?m は 1 つの int にすぎないので、よくわかりません。
while(m--)
for(i = m; i>=0; i--) と同等ですか?
scanf("%s",temp);
len = strlen(temp);
for(i=0;i<=len;i++)
for(j=0;j<=len;j++)
memset(stuff[i][j],0,sizeof(char)*4);
したがって、m がデクリメントしている場合、コンソールからユーザー入力を文字列の形式で取得しますが、実際には文字であり、各文字を temp[] の次のインデックスに保存しますか? len は、実際に初期化されたその配列内の文字数ですか? これは len == m ということですか? そして、memset は各 3 次元配列の 4 つのインデックスを null に設定するだけですか?
ここで期待しているのは、ユーザーが n 文字のシーケンスを入力して一時的に保存し、シーケンス内の文字数に応じて、すべてゼロで埋められた stuff[n][n][4] の 3D 配列を準備することです。 . 基本的に文字列を取り込むだけでは、 while ステートメントが過剰に見えるだけです。
どんな助けでも素晴らしいでしょう。私はこれまで C++ で何もしたことがありませんでしたが、この最後の部分を除いてすべてを理解しました。長くなって申し訳ありませんが、私が考えていることを示そうとしました。