사용자 정의 테스트 점수를 저장할 수있는 STL 벡터를 사용하는 프로그램을 작성해야합니다. 모든 수치가 입력되면, 나는 시험 점수를 평균화하고 오름차순으로 정렬해야합니다. 내가 겪고있는 문제는 내가 넣을 점수의 숫자를 넣은 후에 어떤 숫자를 입력했는지에 상관없이 첫 번째 것만 읽으면 평균을 사용하고 오름차순은 꽤 높습니다. number는 내가 얼마나 많은 점수를 서로 득점했는지 나타냅니다. 이것은 내가 지금까지 가지고있는 것이다. 어떤 도움을 주셔서 감사합니다!C++ STL 벡터
#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'가 호출되면 벡터의 복사본을 전달하게됩니다. 메인의 데이터를 변경하려면 참조로 벡터를 전달해야합니다. '평균'에서는 효율성을 높이기 위해 비용 참조로 전달해야합니다. –