だから私はC++でグレードシステムをやろうとしています. たとえば、A+ は 4.0、A は 4.0、A- は 3.7 になります。+ - ごとに 0.3 の差があります。これが私のコードです:
char grade_letter[3];
float value;
bool input = true;
do{
cout << "Enter letter grade : ";
cin>>grade_letter;
switch(grade_letter[0])
{
case 'A' : value = 4;
break;
case 'B' : value = 3;
break;
case 'C' : value = 2;
break;
case 'D' : value = 1;
break;
case 'E' : value = 0;
break;
}
if(grade_letter[1]=='+'){
value += 0.3;
}
else if (grade_letter[1]=='-'){
value -= 0.3;
}
if (input == true){
if(value > 4.0){
cout << "The numeric value is " << floor(value + 0.5) << endl;
}else if (value < 0.0){
cout << "Grade out of range. " << endl;
}else{
cout<< "The numeric value is " << value << endl;
}
}else {
cout << "Invalid input." << endl;
}
}while(input == false);
A+ A と A- で試したところうまくいきました。ただし、A=、A/、A* で試してみましたが、結果はまだ各グレードのデフォルト値を示しています。検証に問題があります。
ブール入力のデフォルト値を false に設定すると、入力に + と - がある限り、A+ A- などでのみ機能します。文字列と部分文字列を使用して入力を読み取ることを考えていますが、そうであれば、すべてを再コーディングする必要があります。
それで、誰かが私の検証を手伝ってくれませんか?charAt を使用して char grade_letter の長さを確認しようとしましたが、エラーが発生しました。
前もって感謝します。