我在所有 [i] 实例上收到上述标题为“下标值不是数组、指针或向量”的错误,并且似乎无法理解原因。我最近用向量完成的另一个程序似乎没有任何明显的差异并且工作正常。有人看到我错过了什么吗?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int getData(){
vector<int> weeklyScore(16, 0);
for (int i=0; i < 16; i++){
cout << "Enter quiz score (0-15) for week " << i+1 << " : " << endl;
cin >> weeklyScore[i];
if (weeklyScore[i] < 0 || weeklyScore[i] > 15){
cout << "Please enter a valid score (0-15): " << endl;
i--;
}
}
for (int i=0; i<16; i++) {
cout << "Module "<< i+1 << ": " << weeklyScore[i] << endl;
}
return 0;
}
int highScore(){
auto weeklyScore = getData();
int high=0;
int i;
int high;
for(i=0;i<16;i++)
if (weeklyScore[i] > high){
high = weeklyScore[i];
ihigh = i;
}
cout << "The highest score is " << high << " in module "<< ihigh+1 << endl;
return 0;
}
int lowScore(){
auto weeklyScore = getData();
int low=16;
int i;
int ilow;
for(i=0;i<16;i++)
if (weeklyScore[i] < low){
low = weeklyScore[i];
ilow = i;
}
cout << "The lowest score is " << low << " in module "<< ilow+1 << endl;
return 0;
}
int ave(){
auto weeklyScore = getData();
int i;
int average;
int sum=0;
for(i=0;i<16;i++)
sum = sum + weeklyScore[i];
average = sum/16;
return 0;
}
int main() {
highScore();
lowScore();
ave();
return 0;
}
int getData(){
...
return 0;
}
auto weeklyScore = getData();
由于某种原因,您使
getData
返回 int
,因此编译器确定 auto
中的 auto weeklyScore
也是 int
,而不是您想要的向量。
只需更改
getData
即可返回向量
vector<int> getData(){
...
return weeklyScore;
}