2014-02-08 5 views
0

포인터를 사용하여 배열 루프를 만들려고합니다. 예를 들어,2 차원 배열의 각 줄을 계산하는 C++

2 3 1 2 
3 1 2 2 
4 3 2 2 

줄 수는 결정되지 않으므로 정수의 줄 수를 알 수 없습니다. 나는이 정수 데이터를 "점수"라는 포인터 변수에 저장했습니다. 그래서 내가 그들을 액세스하려는 경우,

scores[0][0] = 2 

scores[0][2] = 1 

나는이 각 정수 나누기를 추가 한 후 합계를 추가 할 루프를 만들려고 해요. 나는 그것이이 작업을 수행하는 기능을 구현하는 경우 그래서, 나는 값이 내가 지금까지 무엇을 가지고

4 // (2/2) + (3/2) + (1/2) + (2/2) = 4 
4 
5.5 

것으로 기대했으나 제대로 동작하지 않습니다.

int *total; 
int lines; 
total = new int[lines]; //lines: how many lines there are (assume it is passed through a parameter) 
for (int i=0;i<lines;i++) 
{ 
    for (int j=0;j<howmany;j++) //howmany is how many integers there are per line (assume it is passed again) 
    { 
     total[i] = scores[i][j] //not sure how to divide it then accumulate the sum per line and store it 

는 "점수"이미 정수의 데이터를 저장하고 사용자가 입력 아무것도하지 않습니다 그래서 우리는 다른 곳에서 정수의 데이터를 추출하고 있다고 가정합니다. I 수행하여 계산 된 합을 액세스 할 것이다 총 [0], 총 [1] 등의 정수 부문

+0

코드를 원하는대로 다시 표현하십시오. – WebF0x

답변

2

// (2/2) + (3/2) + (1/2) + (2/2) = 4 
this will give 3, not 4 

이 당신에게 제공 할 4

// (2 + 3 + 1 + 2)/2 = 4 

그리고 당신은 같은 값 5.5을 기대하고, 그래서 당신은 float 또는 double

float *result; 
int lines = 3; // need to initialize local variable before new. for this case, we set the lines to 3. 
int total; 
result = new float[lines]; //lines: how many lines there are (assume it is passed through a parameter) 
for (int i=0;i<lines;i++) 
{ 
    total = 0; 

    for (int j=0;j<howmany;j++) //howmany is how many integers there are per line (assume it is passed again) 
    { 
     total += scores[i][j]; 
    } 

    result[i] = (float)total/2; 
} 
로 결과를 정의해야합니다
+0

3이 아니라 4의 값을 제공합니다. 그리고 마지막에 그것을 수행하는 대신 개별적으로 2로 나누려고합니다. – Kara