我需要編寫一個程序來使用足夠大的STL向量以保存用戶定義數量的測試分數。一旦輸入了所有數字,我需要對測試分數進行平均並按升序對其進行排序。我遇到的問題是在我輸入我要輸入的分數之後,無論我輸入的是多少分數,它都只讀取第一個分數,然後將其作爲平均值,並且升序非常相似數字乘以我放在一起的多少分數。這是我迄今爲止所擁有的。感謝您的任何幫助!C++ STL Vectors
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
float Average (vector<int> scores, int number);
void SortTestScores(vector<int> scores, int n);
void main(){
vector<int> testScores;
float averageScore, score;
int number, i;
cout << "Enter number of test scores: ";
cin >> number;
cout << "Enter test scores: ";
for (i = 0; i < number; i++){
cin >> score;
testScores.push_back(score);
}
SortTestScores(testScores, number);
cout << "Sorted test scores: ";
for (i = 0; i < number; i++){
cout << testScores.at(i);
}
averageScore = Average(testScores, number);
cout << "Average test score is: " << averageScore << endl;
system("pause");
}
//sort function
void SortTestScores(vector<int> scores, int number){
int temp; //temporary variable
int i, j; //loop variables
for (i = 1; i < number; i++){
for (j = 0; j < number - i; j++){
if (scores.at(j) > scores.at(j+1)){
temp = scores.at(j);
scores.at(j) = scores.at (j+1);
scores.at(j+1) = temp;
}
}
}
}
float Average(vector<int> score, int n){
int i;
float avg = 0.0;
for (i = 0; i < n; i++){
avg+=score.at(i);
}
avg = avg/n;
return avg;
}
當調用'SortTestScores'時,您正在傳遞一個向量的副本。如果你想改變主數據,你需要通過引用來傳遞矢量。在「平均數」中,您應該將其作爲效率成本參考。 –