ゴール
C、C ++、またはJavaコード内のすべてのコメントをコメントに置き換えます// Do the needful
。
詳細
このコーディングの課題は簡単です。ファイルの名前を入力として受け取ります。入力ファイルには、C、C ++、またはJavaコードが含まれます。コードには、1つ以上のコメントが含まれます。コメントは、単一行/* */
または//
区切り、および複数行で/* */
区切ることができます。プログラムの出力は、すべてのコメントがに変換されることを除いて、入力と同じでなければなりません// Do the needful
。
たとえば、入力ファイルが次の場合:
#include <iostream.h>
int result; // the result of the calculations
char oper_char; // the user-specified operator
int value; // value specified after the operator
/* standard main function */
int main()
{
result = 0; // initialize the result
// Loop forever (or till we hit the break statement)
while (1) {
cout << "Result: " << result << '\n';
/* This code outputs display and requests
input from the user */
cout << "Enter operator and number: ";
cin >> oper_char;
cin >> value;
if (oper_char = '+') {
result += value;
} else {
cout << "Unknown operator " << oper_char << '\n';
}
}
return (0);
}
プログラムの出力を読む必要があります
#include <iostream.h>
int result; // Do the needful
char oper_char; // Do the needful
int value; // Do the needful
// Do the needful
int main()
{
result = 0; // Do the needful
// Do the needful
while (1) {
cout << "Result: " << result << '\n';
// Do the needful
cout << "Enter operator and number: ";
cin >> oper_char;
cin >> value;
if (oper_char = '+') {
result += value;
} else {
cout << "Unknown operator " << oper_char << '\n';
}
}
return (0);
}
得点
これは人気コンテストです。次の単語がいずれの場合でもプログラムに表示されない場合、スコアに2票追加されます{"do", "the", "needful"}
。スコアは、投票数とボーナス(該当する場合)です。
手当
コメントが文字列リテラルに含まれている場合は、コメントに変換すること// Do the needful
もできます。結局のところ...あなたは十分な必要性を持つことはできません。
/* ... */
が行の非コメントに先行する場合、プログラムは何をすべきですか?
char str[]="/**///";
コメント開始シーケンス/*
が/*
コメントに表示される、またはバックスラッシュ改行が//
コメントに表示される、または//
コメント内の/**/
コメントのようなケースを考慮する必要がありますか?
"d" + "o"
、"t" + "he"
と"need" + "ful"
?また、提出は対処することができなければならないの任意の有効なC、C ++ や Javaのコード?これはかなり厳しく、3つの言語すべてのレクサーを作成することになります(文字列内のコメントリテラルを考えています(逆も同様です)。もしそうなら、サードパーティのレクサーライブラリについてはどうですか?