私は与えられた最も低い入力を見つけなければなりません。 averageScore
機能では、アレイから最も低いスコアを見つけるのに少し問題があります。私は出力として非常に奇妙な数字を得ています。これをどのように調整するかについてのご意見をいただければ幸いです。前もって感謝します。配列から最低の入力を削除しますか?
#include <iostream>
#include <cstdlib>
using namespace std;
//function prototypes
double* allocate(int&);
double averageScore(int&);
int main()
{
double* testArray;
int numOfScores;
double average;
testArray = allocate(numOfScores);
average = averageScore(numOfScores);
//delete memory created
delete[] testArray;
return 0;
}
//function to collect user info, dynamically allocate
double* allocate(int &numOfScores)
{
double* testArray;
//prompt user for scores
cout << "How many test scores would\n";
cout << "you like to process: ";
//user input validation
if(!(cin >> numOfScores))
{
cout << "Invalid input!\n";
cout << "Program termination, please\n";
cout << "restart the program." << endl;
exit(0);
}
else if(numOfScores < 0)
{
cout << "Invalid input!\n";
cout << "Program termination, please\n";
cout << "restart the program." << endl;
exit(0);
}
//dynammically allocate an arrray to hold the scores
testArray = new double[numOfScores];
//get the scores from user
for (int count = 0; count < numOfScores; count++)
{
cout << "Enter Score: ";
//user input validation
if(!(cin >> testArray[count]))
{
cout << "Invalid input!\n";
cout << "Program termination, please\n";
cout << "restart the program." << endl;
exit(0);
}
else if(testArray[count] < 0.0)
{
cout << "Invalid input!\n";
cout << "Program termination, please\n";
cout << "restart the program." << endl;
exit(0);
}
}
return testArray;
}
//function to calculate the average score
double averageScore(int &numOfScores)
{
double* testArray;
double total,
average,
scores[0],
lowest;
lowest = scores[0];
//calculate total scores entered
for(int count = 0; count < numOfScores; count++)
{
total += testArray[count];
//find lowest score entered
for(int count = 1; count < numOfScores; count++)
{
if (testArray[numOfScores] < lowest)
lowest = scores[numOfScores];
}
}
//average the total amount of scores drop the lowest
average = (total - lowest)/numOfScores;
cout << "The average test score is: " << average << endl;
cout << "Lowest is: " << lowest << endl;
return average;
}
2つのコメント:可能な場合は動的に割り当てられた配列の代わりにベクトルを使用し、変更しない場合は 'int&numOfScores'にポイントがありません。 – Bwmat
なぜdouble averageScore(int numOfScores)の代わりに 'double averageScore(int&numOfScores)'をやっていますか? – twain249
最小の値を見つけるために内側の 'for'ループは必要ありません。あなたの外側のループで 'testArray [count]'の値を 'lowest'にそれぞれ比較するだけです。 –