2013-02-21 134 views
1

我试图用C++(Kdevelop platfrom)中的类来编写一个简单的代码来计算ave。 我的头文件是:在']'标记之前的预期主表达式

#include <string> 
class gradeBank 
{ 
public: 
gradeBank(std::string, float [], int n); 
void setCourseName(std::string Coursename); 
std::string getCourseName(); 
void gradeProcess(); 
float Max(); 
float Min(); 
double average(); 
// 
private: 
std::string Coursename; 
int n; // n= number of students, size of grade-array 
float grade[]; 
}; 

我对头文件相关的CPP是:

#include <iostream> 
#include <stdio.h> 
#include "gradeBank.h" 
// 
gradeBank::gradeBank(std::string name, float gradeArray[], int n) 
{ 
setCourseName(name); 
float grade[n]; 
for (int i = 0; i < n; i++) 
    grade[i] = gradeArray[i]; 
} 
// 
void gradeBank::setCourseName(std::string name) 
{ 
Coursename = name; 
} 
// 
std::string gradeBank::getCourseName() 
{ 
return Coursename; 
} 
// 
void gradeBank::gradeProcess() 
{ 
std::cout << "class average is: " << average() << std::endl; 
std::cout << "Maximum grade is: " << Max() << std::endl; 
std::cout << "minimum grade is: " << Min() << std::endl; 
} 
// 
float gradeBank::Max() 
{ 
float max = 0.0; 
for (int i = 0; i < n; i++) 
    max = max > grade[i] ? max : grade[i]; 
return max; 
} 
// 
float gradeBank::Min() 
{ 
float min = 0.0; 
for (int i = 0; i < n; i++) 
    min = min > grade[i] ? min : grade[i]; 
return min; 
} 
// 
double gradeBank::average() 
{ 
double sum = 0.0, ave; 
for (int i = 0; i < n; i++) 
sum += grade[i]; 
ave = sum/n; 
return ave; 
} 

和程序的主体是:

#ifdef HAVE_CONFIG_H 
#include <config.h> 
#endif 

#include <stdio.h> 
#include "gradeBank.h" 
#include <iostream> 
// 
int main() 
{ 
std::string name; 
int num, i; 
float gradeArray[num]; 
std::cout << "Please enter the name of the course: "; 
std::cin >> name; 
std::cout << "Please enter number of students: "; 
std::cin >> num; 
for (i = 0; i < num; i++) 
    { std::cout << "Studnet " << i << " : "; 
    std::cin >> gradeArray[i]; 
    std::cout << std::endl; 
    } 
gradeBank t1(name, gradeArray[], num); 
t1.gradeProcess(); 
std::cin.get(); 
    return 0; 
} 

我收到以下错误:

In function ‘int main()’: 
...e/main.cpp:23: error: expected primary-expression before ‘]’ token 

感谢您的帮助球员

+1

你传递数组错误.. – iKlsR 2013-02-21 14:13:13

+0

这是一个简单的代码来计算平均值? – Potatoswatter 2013-02-21 14:19:33

回答

2

当传递数组时,你不应该添加[]。因此,该行应是这样的:

gradeBank t1(name, gradeArray, num); 

,只能使用[]如果你想通过某个元素,像这样:gradeArray[5]

+0

感谢您的其他信息... – user2090491 2013-02-21 14:19:40

+0

@ user2090491任何时候:)如果你是新的阵列,并想了解更多,请看这个链接:[如何数组工作](http:// www .cplusplus.com/reference/array/array /) 或者更具体的[]页面: http://www.cplusplus.com/reference/array/array/operator[]/ – MrHug 2013-02-21 14:22:08

2

更改此:

gradeBank t1(name, gradeArray[], num); 

这样:

gradeBank t1(name, gradeArray, num); 
+0

感谢您的回答... – user2090491 2013-02-21 14:19:23

2

在第23行要传递的阵列有误,应该是

gradeBank t1(name, gradeArray, num); 
相关问题