私はここで頭がいっぱいです。簡単な例として、次の内容を含むテキスト ファイルを読み取るプログラムを C++ で作成しています。
+ 23 34
- 9 8
+ 100 1
* 8 7
^ 2 5
/ 45 8
リーダーは最初のオペランドを char 型に格納し、取得した char に基づいて、関数を呼び出して 2 つの数値の操作を実行します。これを行うサンプル関数を次に示します。
void doDivision(ifstream &inFile) {
char ch;
int num1, num2;
inFile >> ch >> num1 >> num2;
cout << "Division " << num1 << " " << num2 << " " << "Quotient " << " " << num1/num2 << " Remain " << num1%num2 << endl;
}
引数が &inFile である理由がわかりませんが、この関数プロトタイプは私が作成したものではありませんが、本からのものである可能性があります。
これが私の主な機能です:
int main()
{
ifstream inFile;
char ch;
int num1, num2;
inFile.open("math.txt");
if (inFile.fail())
{
cout << ch;
cout << "The math.txt input file failed to open";
return -1;
}
while(inFile)
{
switch (ch) {
case '+':
doAddition(inFile);
break;
case '-':
doSubtraction(inFile);
break;
case '*':
doMultiplication(inFile);
cout << "debug " << ch;
break;
case '/':
doDivision(inFile);
break;
case '!':
doFactorial(inFile);
break;
default:
cout << "Invalid Operation" << endl;
}
inFile >> ch;
}
inFile.close();
return 0;
}
これらすべてが合わさって、次の意図しない結果が生じます
Invalid Operation
Addition 3 34 sum 37 (wrong data in text file is 23 and 34)
subtraction 0 8 difference 8 (data in textfile is 9 and 8 respectively)
これをどのように実装すればよいでしょうか。これまでファイルを操作したことがないので圧倒されます。