私は途方に暮れています。私はいくつかのことを試しましたが、プログラムの 90% が機能しています。実際、コンパイルして正常に動作します。私の出力は、文字の等級があるはずの非常に奇妙な文字です。
私たちの教科書にはこのような例はなく、探すのが非常に困難です。ある関数で文字の等級を返し、後で別の関数のテーブルで使用する必要があります。これどうやってやるの?
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// function prototypes
void getData(string [], string [], int []);
char calculateGrade(char []);
void printResult(string [], string [], int [], char [], int);
int main()
{
// define 4 parallel arrays
const int NO_OF_STUDENTS = 5;
string studentFNames[NO_OF_STUDENTS];
string studentLNames[NO_OF_STUDENTS];
int testScores[NO_OF_STUDENTS];
char letterGrades[NO_OF_STUDENTS];
// call getData() to populate three of the four parallel arrays
getData(studentFNames, studentLNames, testScores);
// call calculateGrade() to provide values for the fourth parallel array
calculateGrade(letterGrades);
// call printResult() to display report form the parralel arrays
printResult(studentFNames, studentLNames, testScores, letterGrades, NO_OF_STUDENTS);
return 0;
}
// function definition getData()
void getData(string fName[], string lName[], int scores[])
{
// the follow arrays are used for test data (do not modify)
string fNameTest[5] = {"Humpty", "Jack", "Mary", "Jack", "King"};
string lNameTest[5] = {"Dumpty", "Horner", "Lamb", "Sprat", "Cole"};
int scoresTest[5] = {59, 88, 100, 75, 60};
// use a suitable loop to populate the appropriate "empty" arrays
// with values from the three initialized test arrays
for(int index = 0; index < 5; index++)
{
fName[index] = fNameTest[index];
lName[index] = lNameTest[index];
scores[index] = scoresTest[index];
}
}
// function definition for calculateGrade()
char calculateGrade(char letter[])
{
int score;
char gradeLetter[5] = {'A', 'B', 'C', 'D', 'F'};
//for(int i = 0; i < 5; i++)
//{
if(score > 89)
{
return gradeLetter[0];
}
if(score > 79)
{
return gradeLetter[1];
}
if(score > 69)
{
return gradeLetter[2];
}
if(score > 59)
{
return gradeLetter[3];
}
return gradeLetter[4];
//}
}
// function definition for printResults()
void printResult(string lName[], string fName[], int score[], char letter[], int size)
{
cout << setw(15) << left << "Student Name" << setw(9) << right << "Test Score" << " " << setw(5) << "Grade" << endl << endl;
for(int index = 0; index < size; index++)
{
cout << setw(15) << left << (lName[index] + ", " + fName[index]);
cout << setw(9) << right << score[index] << " " << setw(5) << letter[index] << endl;
}
}
これがプログラムです。3 つの関数のみを使用する必要があり、定数やローカル変数を変更できないことに注意してください。後でこのプログラムを変更してファイルから読み取るようにするつもりだと思いますが、現時点ではそれは問題ではありません。
if/else if/else ステートメントで for ループを試してみたところ、スペード、ダイアモンド、および w が得られました。gradeLetter と testScores に配列を使用してみましたが、まだ意味不明です。
どんな助けでも大歓迎です。似たようなことがあったらすみません。このようなものを探すのは悪夢です。