2012-11-08 125 views
2

基本上我有,C++二维数组功能

double marks [STUDENTS][ASSIGNMENTS] = { (0.1,0.2,0.3,0.4,0.5,0.6,0.7), 
              (1,0.9,0.8,0.7,0.6,0.5,0.5), 
              (0.8,0.8,0.8,0.8,0.8,0.8,0.8), 
              (0.8,0.9,0.7,0.8,0.9,0.7,0.8), 
              (0.5,0.6,0.7,0.8,0.9,0.5,0.9)}; 

而且我想:double studentAverages [STUDENTS]studentAverages=calculateStudentAverages(marks);

使用:

double calculateStudentAverages (double marks[STUDENTS][ASSIGNMENTS]){ 
    double averages[STUDENTS]; 
    double average; 
    for (int i = 0; i < STUDENTS; i++) { 
      for (int j = 0; j < ASSIGNMENTS; j++) { 
       average = average + marks[i][j]; 

      } 
      averages[i]=average/ASSIGNMENTS; 

    }  
    return averages; 
} 

,但我得到“无法从“双[转换5]'到'double'“和”无法从'double'转换为'double [5]'“

+0

你会发现哪些错误? –

+0

你应该避免原始数组,因为它们[行为奇怪](http://stackoverflow.com/a/10253277/365496) – bames53

+0

函数被调用的行我得到: '=':无法从'double'转换为'double [5]' 函数中的返回行给出: 'return':无法从'double [5]'转换为'double' – user1810269

回答

3

您的一个错误或者是因为你的函数声明返回一个double,但你试图返回一个doubles的数组。所以,你要么需要改变你的函数头,以适应为,或只返回一个double

不相关的错误,但是当你开始你一定要初始化average0.0,在计算中,否则你未定义行为

+1

..''averages'不能真的从函数返回,因为它们是本地的 –

+0

我只需要函数返回的每行的平均值作为向量,但不知道如何。 – user1810269

+0

@ user1810269,bames53在你原来的问题中的链接包含有帮助的信息aso如何改变你的代码以避免错误,并有明确定义的行为 –