2016-11-10 90 views
-1

它是我的輸入輸出還是其他導致問題的東西。我對C++非常陌生,所以如果事情很簡單,我很抱歉。如果您需要更多信息,我已經在代碼中包含了更多關於該問題的細節。當我嘗試輸出二維數組時,它輸出錯誤的數字。

#include <iostream> 
#include <iomanip> 

using namespace std; 

void input(string names[],int grades[][3]){ 
    for(int n=0;n<3;n++){//Enter 3 into the grade book 
     cout<<"Please enter student name "<<n+1<<endl; 
      cin>>names[n]; 
} 
    for(int r=0;r<3;r++){// Enter 4 grades for each of the 3 students you added  to the grade book 
     cout<<"Please enter 4 grades for "<<names[r]<<endl; 
     for(int c=0;c<4;c++){ 
      cout<<"Grade "<<c+1<<": "; 
       cin>>grades[r][c]; 
     } 
     cout<<endl; 
    } 
} 

//ignore this it wil;l be used to average the grades later 
void math(int grades[][3], double average[]){ 

} 
//If I input these number just to test the program 
//student 1: 1,1,1,1 
//student 2: 2,2,2,2 
//student 3: 3,3,3,3 
//it give me 
//student 1: 1,1,1,2 
//student 2: 2,2,2,3 
//student 3: 3,3,3,3 
void output(string names[],int grades[][3],double average[],char letter[]){ 
    for(int r=0;r<3;r++){ 
     cout<<names[r]<<" "; 
     for(int c=0;c<4;c++){ 
      cout<<grades[r][c]<<" "; 
     } 
      cout<<endl; 
    } 
} 

int main(){ 

int grades[2][3]; 
double average[2]; 
char letter[2]; 
string names [2]; 

input(names,grades); 
math(grades,average); 
output(names,grades,average,letter); 


return 0; 
} 
+1

當'grades'被聲明爲'int grades [] [3]''時,您不能使用(不讀取或寫入)'grades [r] [3]',因爲它超出範圍。 – MikeCAT

回答

0

在C++中,您在數組聲明中使用的數字不是最大索引,而是元素數量。

你的所有數組聲明的缺乏每一個元件,所以對於grades分配一個以上元件(二者漁政,包括參數),averageletternames

0

看起來我的經驗不及您,但我最近才被介紹給功能。

您將下標值傳遞給grade參數,而不是僅將兩個下標值留空。嘗試從grades參數的括號中取出3。運行代碼,看看會發生什麼。